大量のファイルを日付毎フォルダに移動する方法
Stable Diffusionの生成画像をファイルの作成日毎のフォルダに一括移動するスクリプトを作成したため、共有。
例
以下の様な状態でPNGファイルが保存されているとする。
02-13-2023_16-03-13/
txt2img-images/
00135-4292043524.png
00136-1588918178.png
00137-1561085592.png
…
各ファイルの作成日に基づき、次の様なディレクトリに整理したい。
by-date/
2023-02-12/
00135-4292043524.png
2023-02-13/
00136-1588918178.png
00137-1561085592.png
…
使用ソフト
Python 3 for Windows
スクリプト作成
以下内容を「organize.py」などとして保存。
import datetime
import glob
import os
import shutil
import sys
# Wildcard filename match.
FNMATCH = "*.png"
# Where the matched files move to.
DESTINATION = "by-date"
SUBDIR_FORMAT = "%Y-%m-%d"
if len(sys.argv) > 1:
src_dirname = sys.argv[1]
count = 0
for src_filename in glob.glob(f"{src_dirname}/**/{FNMATCH}", recursive=True):
# Get a creation time on Windows.
ctime = datetime.datetime.fromtimestamp(os.path.getctime(src_filename))
basename = os.path.basename(src_filename)
dst_dirname = os.path.join(DESTINATION, ctime.strftime(SUBDIR_FORMAT))
dst_filename = os.path.join(dst_dirname, basename)
if not os.path.isdir(dst_dirname):
os.makedirs(dst_dirname)
if os.path.exists(dst_filename):
print(f"file exists: {dst_filename}")
continue
shutil.move(src_filename, dst_filename)
count += 1
print(f"{count} files moved.")
else:
print(f"usage: {sys.argv[0]} DIRECTORY")
# Keep the output window for Windows.
os.system("PAUSE")
実行
Windows であれば上記 organize.py に未分類の親フォルダをドラッグアンドドロップすると、スクリプトのあるディレクトリ同階層に「by-date/20XX-XX-XX」の様なフォルダが作成され、PNGファイルが移動される。
この記事が気に入ったらサポートをしてみませんか?