[Python] ファイル名の先頭に今日の日付を追加したファイル名に変更するツールを作成する
はじめに
検索のしやすさから、ファイル名付与ルールとして、作成した日付を先頭につける(例:20220421_xxx.xlsx)を行っています。
受領したファイルは、当然そのルールになっていないことが多いので、その場合、手入力で日付を追加して、ファイル名を変更する、という作業が発生します。ちょっとしたことではありますが、めんどくさいと感じることもしばしば…。
今回は、Pythonで、ファイル名の先頭に今日の日付を追加したファイル名に変更するツールを作成します。
また、作成したツールの実行を、ダブルクリックで実行できるよう、設定も行います。
使用するライブラリ
datetime
日付、時間を処理するための標準ライブラリです。
使用するライブラリ
os.path
パス名を操作するための標準ライブラリです。
os
OS 依存の機能をサポートするための標準ライブラリです。
動作環境
windows11
Jupyter Notebook 6.4.8
Python 3.8.12
実装
全体の処理は、下記です。
import os
import sys
import datetime
def main(file_path_list):
d_today = datetime.date.today()
str_today = d_today.strftime('%Y%m%d')
for file_path in file_path_list:
folder_name = os.path.dirname(file_path)
file_name = os.path.basename(file_path)
new_file_name = str_today + '_' + file_name
new_file_path = os.path.join(folder_name, new_file_name)
os.rename(file_path, new_file_path)
if __name__ == '__main__':
args = sys.argv
main(args[1:])
順番に処理の内容を説明します。
①コマンドラインから渡されたファイル名を取得
args = sys.argv
sys.argvは、リスト型でコマンドラインから渡された引数が格納されます。リストの1番目は、実行ファイル名となるため、2番目以降をファイルのパス名として処理を行います。
def main(file_path_list):
for file_path in file_path_list:
②今日の日付を文字列に変換
d_today = datetime.date.today()
str_today = d_today.strftime('%Y%m%d')
date.todayメソッドで、今日の日付をdateオブジェクトで取得します。
次に、date.strftimeメソッドで、日付を引数で指定したフォーマットに変換した文字列を取得します。
今回は、年月日(例:20220422)に変換しています。
指定できる書式化コードの詳細は、下記をご参照ください。
③ファイルパスから、フォルダ名、ファイル名を取得し、変更後の新しいファイル名を作成
folder_name = os.path.dirname(file_path)
file_name = os.path.basename(file_path)
os.path.dirnameメソッドは、引数で渡されたファイルのパスから、フォルダ名(ディレクトリ名)を取得することがができます。
また、os.path.basenameメソッドは、引数で渡されたファイルのパスから、ファイルの拡張子を含むファイル名を取得することができます。
new_file_name = str_today + '_' + file_name
new_file_path = os.path.join(folder_name, new_file_name)
先ほど取得したファイル名の先頭に、今日の日付を追加し、ファイル名を作成します。新しいファイル名のファイルパスを、os.path.joinメソッドを使って作成します。
④ファイル名の変更
os.rename(file_path, new_file_path)
os.renameメソッドで、第1引数のファイルパス名を、第2引数のファイルパス名に変更します。
以上で完成です!
pyファイルをダブルクリックで実行するための設定
こちらの記事を参考に、pyファイルをダブルクリックで実行できるように設定を行いました。
実行してみます。
pyファイルのアイコンの上に、ファイル名を変更したいファイルをドラックアンドドロップすることで、Pythonスクリプトの引数として、ドラックアンドドロップしたファイルのフルパスを設定することができます。
今日の日付が先頭についたファイル名に変更することができました。
まとめ
今回は、Pythonで、ファイル名の先頭に今日の日付を追加したファイル名に変更するツールを作成し、pyファイルをダブルクリックで実行できるよう設定を行いました。
小さなことではありますが、めんどくさいを改善できて、うれしい限りです。