見出し画像

【ファイル操作】ファイルやフォルダの一括リネームツール サンプルコード

・業務効率化には何すればいいのかな?
・Pythonで自動化ツールを作成できると聞くけど、具体的に何が作れるの?
・自動化のアイデアが出てこない

こんな悩みを抱えている人に向けて、Pythonで作れる自動化ツールを解説しています。

ファイル操作のツールについて、こちらの記事で紹介しています。
 ⇒【ファイル操作】Pythonで作れる自動化ツールの具体例アイデア9選【業務効率化】

本記事では、ファイルやフォルダの一括リネームツールのサンプルコードを公開しています。

サンプルコードは、自分で作成するのが難しい方や、ツール作成の手間を減らしたい方にお勧めです。ぜひご活用ください。



アイデア「ファイルやフォルダの一括リネームツール」

概要

指定したフォルダ内のファイルやサブフォルダの名前を一括でリネームします。

導入メリット

ファイル整理の効率化を図り、作業時間を削減できます。

ツール機能

ユーザーが指定したパターンに基づいて、ファイルやフォルダの名前を一括で変更します。

必要技術

os:ファイルやフォルダの名前を変更するために使用

処理フロー

  1. ユーザーがリネームしたいフォルダのパスを指定

  2. リネームルール(接頭辞、接尾辞、連番など)をユーザーから入力受け取り

  3. 指定フォルダ内のファイルやサブフォルダの現在の名前を取得

  4. リネームルールに基づいて新しい名前を生成

  5. 各ファイルやフォルダに対してリネームを実行

  6. リネームの結果をログとして保存またはユーザーに通知


注意事項

著作権について

本ソースコードの著作権は、販売者に帰属します。
修正や改変は自由に行えますが、無断での複製、配布は法律で禁止されています。

ライセンスについて

本ソースコードは、個人利用及び商用利用が可能です。ただし、再販売や、本ソースコードを基にした派生作品の販売は禁止します。

返金について

デジタルコンテンツの性質上、購入後の返品や返金は原則として受け付けておりません。

使用上の免責事項

本ソースコードは予告なく変更や修正を行う場合があります。
本ソースコードの動作を保証するものではありません。
本ソースコードの使用から生じたいかなる直接的または間接的な損害に対しても、販売者は責任を負いません。
動作の不具合については、購入者自身の責任で対処してください。

サポートについて

本ソースコードに関するサポートは行っておりません。バグ報告や質問への対応は致しかねます。


ソースコード

import os

def get_user_input():
    """
    ユーザーからフォルダパス、接頭辞、接尾辞、連番の有無を入力してもらう関数。
    """
    folder_path = input("リネームしたいフォルダのパスを入力してください: ")
    prefix = input("接頭辞を入力してください (省略可): ")
    suffix = input("接尾辞を入力してください (省略可): ")
    numbering = input("連番を追加しますか? (y/n): ")
    return folder_path, prefix, suffix, numbering.lower() == 'y'

def rename_items_in_folder(folder_path, prefix="", suffix="", numbering=False):
    """
    指定されたフォルダ内のファイルやサブフォルダをリネームする関数。
    
    Args:
        folder_path (str): リネームしたいフォルダのパス
        prefix (str): 追加する接頭辞
        suffix (str): 追加する接尾辞
        numbering (bool): 連番を追加するかどうか
    
    Returns:
        list: リネーム前後の名前のリスト
    """
    # フォルダ内の全ファイルとサブフォルダを取得
    items = os.listdir(folder_path)
    renamed_items_log = []

    # 連番用のカウンタ
    counter = 1

    for item in items:
        old_name = item
        base, ext = os.path.splitext(old_name)
        new_name = prefix + base + suffix + ext

        if numbering:
            # 連番を追加
            new_name = f"{prefix}{counter:03d}{suffix}{ext}"
            counter += 1

        old_path = os.path.join(folder_path, old_name)
        new_path = os.path.join(folder_path, new_name)

        # リネーム実行
        os.rename(old_path, new_path)
        renamed_items_log.append((old_name, new_name))

    return renamed_items_log

def main():
    """
    プログラムのエントリーポイント。
    ユーザー入力を取得し、リネーム処理を実行し、結果を表示およびログに保存する。
    """
    folder_path, prefix, suffix, numbering = get_user_input()
    renamed_items_log = rename_items_in_folder(folder_path, prefix, suffix, numbering)
    
    # リネーム結果の表示
    print("リネーム結果:")
    for old_name, new_name in renamed_items_log:
        print(f"{old_name} -> {new_name}")

    # 結果をログファイルに保存
    with open("rename_log.txt", "w", encoding="utf-8") as log_file:
        for old_name, new_name in renamed_items_log:
            log_file.write(f"{old_name} -> {new_name}\n")

if __name__ == "__main__":
    main()

最後まで読んでいただき、ありがとうございました!
参考のなったと思っていただけたら、
♡スキを押していただけると嬉しいです。

今後もサンプルコードを紹介する予定なので、
関心のある方は是非アカウントのフォローをお願いします!

この記事が気に入ったらサポートをしてみませんか?