【4 weeks challenge – Python】Day 10 ファイル名に連番をつけて一括変換

daily_trial

こんにちは、しらすです。

10日目です。本日の習得スキルは「ファイル名に連番をつけて一括変換」です!

ファイル名に連番をつけて一括変換でできること

任意のフォルダの任意の文字列を含むファイルのファイル名を一括で変換することができます。

使い方

org = glob.glob("./day09_sample/*.log")                    #特定の文字列を含むファイルの一覧をList型で取得

#ファイル名に連番をつけて一括変換
for i, old_file in enumerate(org):
    new_file = "./day09_sample/log_{0:03d}.log".format(i)  #変換後のファイル名を指定
    os.rename(old_file,new_file)                           #ファイル名変更

結果

“.log”という拡張子を持つファイルのみファイル名を一括で変換することができました。

おためし編

ファイル名はイテレータで取得してメモリ節約

globはファイル名をList型で取得して格納します。今回程度のファイル数であれば特に問題ありませんが、ファイル数が数千、数万という単位になったときにはメモリの使用量などを考慮する必要が出てくるかもしれません。

その際はiglobを使用しましょう。iglobはファイル名をイテレータで取得します。用途がFor分で回すのであればイテレータで取得するようにした方がよさそうです。

参考

Pythonで条件を満たすパスの一覧を再帰的に取得するglobの使い方 | note.nkmk.me
Pythonのglobモジュールを使うと、ワイルドカード*などの特殊文字を使って条件を満たすファイル名・ディレクトリ(フォルダ)名などのパスの一覧をリストやイテレータで取得できる。glob --- Unix 形式のパス名のパターン展開 — Python 3.7.1rc1 ドキュメント globモジュールは標準ライブラリ...
ゼロからはじめるPython(40) Pythonで連番リネームに挑戦しよう
趣味や業務で大量のファイルを扱う場面というのは多い 。その際、あまりにも大量のファイルがあると、一つ一つ名前を付けることは物理的に不可能だ。しかし、それら大量のファイルに対して、何かしら意味のある名前をつけておきたい。そんなときに採用するのが、連番のついたファイル名だ。Pythonを使えば、連番リネームも簡単だ。今回は...

コメント