1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonでファイル名に作成日を一括付与する

Posted at

背景

趣味のイラストデータのファイル名管理のために、pythonを使用し一括で作成日時の付与を行う処理を作成してみました。

動作環境

Windows11
Python 3.12.7

実際の動作

↓renameフォルダ配下の「start.bat」から実際のコードが入っている「rename.py」を実行します(コマンドプロンプトからの実行も可能)
image.png

↓renameフォルダ配下
image.png

↓実行後 フォルダ以外のファイルに「YYYY-MM-DD_」が付与されます
image.png

コード全体

rename.py
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()

コードの説明

rename.py
import os
import time
import re

まずはライブラリのインポート、今回は
・ファイル名書き換えのためのosモジュール
・時間変換のためのtimeモジュール
・正規表現使用のためのreモジュール
をインポートしていきます。

rename.py
# フォルダ内のファイルを取得
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_」の作成日が付与されているかどうかを正規表現でチェックしています

rename.py
        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()」を使用すると更新日の取得が可能です。

rename.py
        # 新しいファイル名を作成
        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を勉強する必要があるため、勉強のとっかかりとして作ってみました。

これから勉強のアウトプットのために記事の作成も出来ればと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?