Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで複数のファイル名を再帰的に一括変更する方法

Pythonでは、os.walkを使ってディレクトリを再帰的に走査し、見つかったファイルに対してos.renameを適用することで、フォルダ内の複数のファイル名をまとめて変更できます。ここでは、特定の文字列を別の文字列に置き換える形でファイル名を一括リネームする方法を紹介します。

コード例

import os

def replace(folder_path, old, new):
    for path, subdirs, files in os.walk(folder_path):
        for name in files:
            if(old.lower() in name.lower()):
                file_path = os.path.join(path, name)
                new_name = os.path.join(path, name.lower().replace(old, new))
                os.rename(file_path, new_name)

使い方

この関数は次のように呼び出します。

replace('my_folder', 'IMG', 'Image')

このコードを実行すると、指定したフォルダとそのサブフォルダ内にあるすべてのファイルが再帰的に検索され、各ファイル名に含まれる「IMG」が「Image」に置き換えられます。

コードのポイント

  • os.walk:指定したフォルダ以下を再帰的にたどり、現在のパス・サブディレクトリ・ファイル名の一覧を順番に返します。深い階層のファイルまで漏れなく処理できます。
  • 大文字・小文字を区別しない判定old.lower() in name.lower() とすることで、「img」「Img」「IMG」など表記ゆれのあるファイル名もすべてマッチさせることができます。
  • os.path.join:OSごとに異なるパス区切り文字(Windowsの「\」やLinux/macOSの「/」)を自動的に処理するため、環境を問わず同じコードが動作します。

注意点

ファイル名の変更は基本的に元に戻せないため、実行前に重要なファイルのバックアップを取っておくことをおすすめします。また、変更後の名前がすでに存在するファイルと重複した場合は FileExistsError が発生するので、try-exceptによる例外処理を追加しておくとより安全です。

条件分岐や置換ルールを自分の用途に合わせてカスタマイズすれば、写真ファイルの整理やログファイルの一括リネームなど、さまざまな場面でこの手法を活用できます。

  1. Windowsで複数のファイルを一括リネームする4つの方法【初心者向け完全ガイド】

    旅行中に撮った写真がたくさんあって、フォルダの中にバラバラの名前で保存されている…そんな経験はありませんか?また、脚本や原稿を何度も下書きしている場合、名前を整理しておかないと目的のファイルを探すのに苦労します。複数のファイルを1つずつ手作業でリネームするのは時間がかかり、かなりの負担です。幸い、Windowsには数クリックでファイルをまとめて一括リネームできる便利な機能が備わっています。この記事では、複数のファイルの名前を一度に変更する方法を詳しく解説します。 .pngファイルや.docファイルなど、同じ種類のファイルには共通の名前を付けておくと、フォルダ内での管理や検索が格段に楽になります

  2. Macで複数のファイル名を一括変更する方法|Finderの標準機能で簡単リネーム

    Macは高い信頼性と先進的な技術で知られていますが、それだけではありません。複数のファイルに対する操作をまとめて処理できる「一括タスク」機能により、1つずつ手作業で変更する面倒な労力から解放してくれる点でも人気を集めています。大量のファイル名をまとめて変更したり、一括で編集を加えようとした経験のある方なら、その手間とストレスは痛いほど分かるでしょう。 実は、macOS Yosemite以前のMacには、ファイルを一括で名称変更する標準機能が搭載されていませんでした。そのため、この作業を実現するにはサードパーティ製のアプリをインストールするしかありませんでした。しかし、最新バージョンのmacOS