[Python]ファイル名の一括編集機能

プログラミング

対象となる方

・フォルダに存在する全てのファイル名に一括で変更したい方

・Pythonでローカルのファイルを操作したい方

はじめに

写真やスクリーンショット、レポート資料など、ファイル名がバラバラだと探すのに時間がかかります。そこで役立つのが「ファイル名の一括編集」です。Pythonを使えば、フォルダ内のすべてのファイル名をまとめて変更することができ、作業効率が大幅に向上します。この記事では、初心者向けに「PythonでJPGファイル名に接頭辞を付けるプログラム」を解説し、さらに応用として「拡張子をまとめて変更する方法」も紹介します。

ファイル名を一括変更するコード

import os
import glob
from pathlib import Path

def rename_jpg_files(directory_path, prefix="2025"):
    
    if not os.path.exists(directory_path):
        print(f"エラー: 指定されたパス '{directory_path}' が存在しません。")
        return
    
    jpg_files = []
    for ext in ['*.jpg', '*.JPG', '*.jpeg', '*.JPEG']:
        jpg_files.extend(glob.glob(os.path.join(directory_path, ext)))
    
    if not jpg_files:
        print("対象となるJPGファイルが見つかりませんでした。")
        return
   
    print(f"対象ディレクトリ: {directory_path}")
    print(f"見つかったJPGファイル数: {len(jpg_files)}件")
    print("\n=== 変更対象ファイル一覧 ===")
    
    rename_list = []
    for file_path in sorted(jpg_files):
        filename = os.path.basename(file_path)
        new_filename = prefix + filename
        new_file_path = os.path.join(directory_path, new_filename)
        
        print(f"変更前: {filename}")
        print(f"変更後: {new_filename}")
        print("-" * 50)
        
        rename_list.append((file_path, new_file_path, filename, new_filename))
    
    print(f"\n{len(rename_list)}個のファイルの名前を変更します。")
    confirm = input("実行してよろしいですか? (y/N): ").strip().lower()
    
    if confirm not in ['y', 'yes']:
        print("処理をキャンセルしました。")
        return
    
    success_count = 0
    error_count = 0
    
    print("\n=== ファイル名変更実行中 ===")
    for old_path, new_path, old_name, new_name in rename_list:
        try:
            # 同名ファイルの存在チェック
            if os.path.exists(new_path):
                print(f"警告: '{new_name}' は既に存在します。スキップします。")
                continue
                
            os.rename(old_path, new_path)
            print(f"✓ {old_name} → {new_name}")
            success_count += 1
            
        except Exception as e:
            print(f"✗ エラー: {old_name} の変更に失敗しました。({str(e)})")
            error_count += 1
    
    print("\n=== 処理結果 ===")
    print(f"成功: {success_count}件")
    print(f"エラー: {error_count}件")
    print(f"合計: {len(rename_list)}件")

#対象ディレクトリを入力
target_directory = r"C:\Users\〇〇"

print(f"対象ディレクトリ: {target_directory}")
print()

# ファイル名変更実行
rename_jpg_files(target_directory)

実行後

上記のように、対象となるファイル数・変更前のファイル名、変更後のファイル名を確認でき、「y」を入力すると、実行されます。

実行後のディレクトリを確認してみましょう

ディレクトリ内のファイル名

実行前                  ➡ 実行後

実行前と比較して、ディレクトリに存在するファイル名の先頭に指定した文字「2025」が記載できるようになっています。

このように、今回は以下の条件に該当するプログラムを作成しました。

  • JPGファイル名のファイルのみ選択し、実行
  • 変更前と変更後のファイル名の比較を一覧表示
  • ユーザーに実行確認を取る
  • 同名ファイルがあれば上書きせず、スキップ
  • 指定されたパスに存在しているファイルのみ検索

まとめ

Pythonを使えば、ファイル名の一括編集は簡単に実現できます。
紹介したコードは初心者でも扱いやすく、安全に利用できるよう確認処理や上書き防止が含まれています。さらに、応用編として、拡張子の統一や接尾語に指定した文字を加えることも可能になります。是非、日々の業務やファイル整理にぜひ活用してみてください!

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

タイトルとURLをコピーしました