Python、「同じ処理を2回以上繰り返したらエラーメッセージが表示」試してみた。
過去作成したコードを、改良してみました。
import os
import datetime
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
# 変更済みのファイル名を記録するためのセット
renamed_files = set()
def rename_files(root_path):
for file_name in os.listdir(root_path):
file_path = os.path.join(root_path, file_name)
if os.path.isfile(file_path):
if file_name in renamed_files:
print(f'処理済です。{file_path} を再確認して下さい。')
continue
update_time = os.path.getmtime(file_path)
update_time_str = datetime.datetime.fromtimestamp(update_time).strftime('%Y%m%d%H%M')
# ファイル名の末尾に更新日時が含まれている場合は処理を中止する
if file_name.endswith(f'_{update_time_str}{os.path.splitext(file_name)[1]}'):
print(f'ファイル名の末尾に更新日時が含まれています。{file_path} をスキップします。')
continue
new_file_name = f'{os.path.splitext(file_name)[0]}_{update_time_str}{os.path.splitext(file_name)[1]}'
new_file_path = os.path.join(os.path.dirname(file_path), new_file_name)
if os.path.exists(new_file_path):
print(f'エラー: {new_file_path} はすでに存在します。')
continue
os.rename(file_path, new_file_path)
renamed_files.add(file_name)
print(f'{file_path} を {new_file_name} に変更しました')
def select_folder():
root = tk.Tk()
root.withdraw() # メインウィンドウを非表示にする
folder_path = filedialog.askdirectory(title='フォルダを選択してください')
if folder_path:
rename_files(folder_path)
if renamed_files:
messagebox.showinfo('処理完了', 'ファイル名の変更が完了しました。')
else:
messagebox.showinfo('処理完了', '処理済です。')
else:
messagebox.showinfo('キャンセル', 'キャンセルされました。')
if __name__ == "__main__":
select_folder()
この修正では、file_name.endswith(f'_{update_time_str}{os.path.splitext(file_name)[1]}') を使用して、ファイル名の末尾に更新日時が含まれているかどうかをチェックしています。含まれている場合は処理をスキップします。
この記事が気に入ったらサポートをしてみませんか?