背景
趣味のイラストデータのファイル名管理のために、pythonを使用し一括で作成日時の付与を行う処理を作成してみました。
動作環境
Windows11
Python 3.12.7
実際の動作
↓renameフォルダ配下の「start.bat」から実際のコードが入っている「rename.py」を実行します(コマンドプロンプトからの実行も可能)
↓実行後 フォルダ以外のファイルに「YYYY-MM-DD_」が付与されます
コード全体
import os
import time
import re
# フォルダのパスを指定
folder_path = r'../'
# フォルダ内のファイルを取得
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
# # ファイルかどうかを確認
if os.path.isfile(file_path) and not re.match(r'^\d{4}-\d{2}-\d{2}_', filename):
creation_time = os.path.getmtime(file_path)
# 作成日時をフォーマットしてファイル名に追加
creation_time_str = time.strftime('%Y-%m-%d', time.localtime(creation_time))
# 新しいファイル名を作成
new_filename = f"{creation_time_str}_{filename}"
new_file_path = os.path.join(folder_path, new_filename)
# ファイル名を変更
os.rename(file_path, new_file_path)
print(f"Renamed: {filename} -> {new_filename}")
print("日付追加が完了しました")
input()
コードの説明
import os
import time
import re
まずはライブラリのインポート、今回は
・ファイル名書き換えのためのosモジュール
・時間変換のためのtimeモジュール
・正規表現使用のためのreモジュール
をインポートしていきます。
# フォルダ内のファイルを取得
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
# # ファイルかどうかを確認
if os.path.isfile(file_path) and not re.match(r'^\d{4}-\d{2}-\d{2}_', filename):
該当フォルダからすべてのファイルを取得し処理を行っていきます。
今回フォルダは名前変更をしないので、スキップします。
また複数回起動したときに作成日が重複して付与されないように、既に「YYYY-MM-DD_」の作成日が付与されているかどうかを正規表現でチェックしています
creation_time = os.path.getmtime(file_path)
# 作成日時をフォーマットしてファイル名に追加
creation_time_str = time.strftime('%Y-%m-%d', time.localtime(creation_time))
「os.path.getmtime()」で作成日を取得し該当の形式にフォーマットしていきます
ちなみに「os.path.getatime()」を使用すると更新日の取得が可能です。
# 新しいファイル名を作成
new_filename = f"{creation_time_str}_{filename}"
new_file_path = os.path.join(folder_path, new_filename)
# ファイル名を変更
os.rename(file_path, new_file_path)
print(f"Renamed: {filename} -> {new_filename}")
フォーマットした日付とファイル名をくっつけて、ファイル名を作成し、osモジュールでリネームを行って1回の処理が完了します。
まとめ
仕事でpythonを勉強する必要があるため、勉強のとっかかりとして作ってみました。
これから勉強のアウトプットのために記事の作成も出来ればと思います。