ファイル名をランダムな文字列に変更するスクリプトを書きました。
ランダム文字列を正規表現で指定できるrstrというライブラリを使いました。
環境
Python 3.7.3
rstr 2.2.6
背景
テストデータでAWS S3上に縦横サイズがさまざな画像を1000〜5000枚を用意する必要がありました。
テスト対象のスクリプトではS3.listObjectsメソッドを使っています。
S3.listObjectsメソッドではリストのソート順がファイル名文字列ソートです。
ローカルでコピーを繰り返して画像ファイルを複製してS3にアップロードすると、ファイル名文字列ソートではサイズが異なる画像がばらつかないので、ランダムな文字列でリネームするスクリプトを用意しました。
諸事情あって、先頭2桁を数字としました。
ディレクトリ構成
構成は以下です。
├── script.py
└── tmp
├── test_1.jpg
├── test_2.jpg
└── test_3.jpg
script
script.py
import glob
import rstr
import os
import os.path
def main():
files = glob.glob("./tmp/*")
for file in files:
dir, ext = os.path.splitext(file)
dir_path = os.path.dirname(file)
rename_str = dir_path + '/' + rstr.xeger(r'^[0-9]{2}[0-9a-zA-Z0-9]{10}') + ext
os.rename(file, rename_str)
if __name__ == "__main__":
main()
実行結果
├── script.py
└── tmp
├── 04C523E7j5l1.jpg
├── 91G0nUvJEzEv.jpg
└── 93PVR3tNKzJc.jpg
参考サイト