python
アイキャッチ 猫

こんにちは!
今回はPythonでファイルをリネームするプログラムを作成してみましたので、ご紹介いたします。
良かったら最後まで見てみてくださいね♪

今回は「osモジュール」「globモジュール」をそれぞれ使って一括でリネーム処理をしています。
ファイルをそのままリネームしているので、動かす前にファイルのバックアップは取るようにしてくださいね。

 やりたいこと

こちらが処理前のディレクトリ構成です。

各画像ファイル名の頭4桁「a001」等をキーに連番を振っていきます。
例えば「a001」から「a002」に変わると、また連番が001始まりになります。

サンプルコード

import os
import glob

# 1.フォルダパス設定
in_folder = "c:/sample/in/"

# 2.処理するファイル一覧情報を取得
file_list = glob.glob(in_folder + "*")

# 3.連番付与するための変数を初期化
cnt = 0
hold_page = ""

for f in file_list:
    # 4.f_titleにファイル名(拡張子なし)、f_extに拡張子
    f_title, f_ext = os.path.splitext(os.path.basename(f))
    now_page = f_title[1:4]

    # 5.連番設定(キーブレイク)
    if hold_page != now_page:
        cnt = 0
        hold_page = now_page
    cnt += 1
    
    # 6.リネーム処理
    os.rename(f, os.path.join(
        in_folder, now_page + "_picture_" + '{0:03d}'.format(cnt) + f_ext))

以下、コードの解説です。

1.in_folderに元フォルダのパスを設定

2.処理するファイルの情報を一覧で取得

3.連番を付与する変数(cnt、hold_page)を初期化

4.f_titleにファイル名(拡張子なし)、f_extに拡張子を設定
※ リネーム処理に使用します。

5.連番のカウント処理
1つ前のファイル名とキーが異なる場合、連番リセット

6.ファイルリネーム処理

4~6まで全ファイル分処理を続ける

このコードを実行すると、元フォルダに画像ファイルがリネームされてコピーされます。

終わりに

いかがでしたでしょうか?
現在Python勉強中の身ですが、プログラムを動かして結果を確認できるものを作成するのは達成感もありますので、良かったら参考にしてみてください!

ここまでご覧いただきありがとうございました!

また、本記事を記述するにあたり、こちらを参考にさせていただきました。
Pythonでファイル名の前後に文字列や連番を加えて一括変更