フォルダ内の「ファイル名の特定の文字列」を一括変換 (python)

programing

筆者がWindows環境のため、記事の内容もWindows環境向けの解説になることをご了承ください。

この記事の目的

日々たくさんのレポートを作っていると、あるタイミングで、ファイル名を一気に変えたいといった場面があるかも知れません。この記事ではそういった場面を想定しています。

今回の記事では、「あるフォルダ内にあるファイルのファイル名の一部の文字列を、他の文字列に一括で変換する」ということを行います。

Pythonを使いますので、環境構築の解説から始めますが、既にPythonの実行環境がある方は、読み飛ばしてください。

WindowsでPythonが動く環境を作る

自分のPCにPythonをインストールしていきましょう。

まずは以下のリンクから、Pythonの公式サイトにアクセスしてください。

Welcome to Python.org
The official home of the Python Programming Language

画面上部の「Downloads」という箇所にマウスを乗せると、上記の画像のようなメニューが表示されます。
表示されたメニューの右側に「Python 3.XX.X」というグレー色のボタンがありますので、そのボタンをクリックしてください。

ボタンをクリックするとダウンロードが開始されます。ダウンロードが完了したら、そのファイルを開いてください。

ファイルを開くと、以下のような画面が表示されます。

表示された画面の一番下に「Add python.exe to PATH」というチェックボックスがありますので、必ずチェックをしてください

チェックをしたら、画面中央の「Install Now」というリンクをクリックしてください。

デバイス変更の許可の確認を聞かれた場合は、「yes」をクリックしてください。 

最後に、以下のような画面が表示されればインストール完了です。


自分のPCでPythonが使えるようになっているかを確認してみましょう。
Pythonを用いるには「コマンド プロンプト」と呼ばれるツールを用います。
Windows OS に最初から実装されています。

PCの画面左下などにある検索バーに「コマンド プロンプト」と入力してください。「コマンド プロンプト」というアプリケーションが表示されたら、ダブルクリックで開きます。

以下のような黒い画面が表示されたかと思います。

Pythonがインストールされているかどうかを確認してみましょう。以下のコマンドを入力して、「Enter」キーを押してください。

python --version

以下の画像のように、Python 3.XX.X と表示されれば、正常にPythonのインストールができています。

2. Pythonのコードを書いて実行する

ここからは自分のPCでPythonのコードを書いて、実行する方法を解説します。

まず、自分のPCのどこでもいいので、Pythonのコードを保存するフォルダを作ってください。

エディタ(VS code(Visual Studio Code)など)で先程作成したフォルダを開き、その中に、この記事の目的となる、「あるフォルダ内にあるファイルのファイル名の一部の文字列を、他の文字列に一括で変換する」Pythonのコードが書かれたファイルを作りますので、たとえば、「filename_renamer.py」ファイルを作成してください。

作成した「filename_renamer.py」にPythonのコードを書いていきましょう。

コードを書く前に、与件の整理です。

今回の与件は、下記の通りです。

下記のPythonのコードを書いて下さい。
””””””””””””””””’
ローカルPCフォルダ
C:\Users\nakat\Dropbox\new_world\xxxxx\tenpo_report\20231017
内にある、拡張子.pdfのファイルのファイル名の一部の文字列、
「_1016」

「_1017」
に置換する。
置換後も同一フォルダにファイルを保存する。
置換前のファイルのバックアップは不要。

今回の与件

さて、この難易度のコードであれば、生成AIのGPT-4または、VS code(Visual Studio Code)で利用できるGitHub Copilotのどちらでも、1回プロンプトを投げるだけで、コードを完成させてくれます。確認していませんが、無料版のChatGPTでも、問題なく書いてくれると思います。

今回はGitHub Copilotにコードを書いてもらいました。それがこちらです。

import os

folder_path = r"C:\Users\nakat\Dropbox\new_world\softbank_sumikko\tenpo_report\20231017"

for filename in os.listdir(folder_path):
    if filename.endswith(".pdf") and "_1016" in filename:
        new_filename = filename.replace("_1016", "_1017")
        os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))

ただ書いてもらうだけだと、何が起こっているのか理解できない方もおられるかと思いますので、生成AIに「このコードを解説して」と依頼して、自分が理解できるまで、質問を繰り返しましょう。

GitHub Copilotによる解説文

このPythonコードは、指定されたフォルダ内のすべてのPDFファイルのファイル名を変更するプログラムです。

import os

まず、Pythonの標準ライブラリであるosモジュールをインポートしています。osモジュールには、ファイルやフォルダを操作するための関数が含まれています。

folder_path = r"C:\Users\nakat\Dropbox\new_world\xxxxx\tenpo_report\20231017"

次に、変更したいファイルが保存されているフォルダのパスを指定しています。rを文字列の前に付けることで、バックスラッシュ(¥)をエスケープシーケンスとして扱わずにそのまま文字列として扱うことができます。

for filename in os.listdir(folder_path):

os.listdir()関数を使って、指定されたフォルダ内のすべてのファイル名を取得し、forループで1つずつ処理しています。

if filename.endswith(".pdf") and "_1016" in filename:

ファイル名が.pdfで終わり、かつファイル名に”_1016″が含まれている場合に、ファイル名を変更する処理を行います。

new_filename = filename.replace("_1016", "_1017")

ファイル名の”_1016″を”_1017″に置換して、新しいファイル名を作成します。

os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))

os.rename()関数を使って、元のファイル名を新しいファイル名に変更します。os.path.join()関数を使って、フォルダパスとファイル名を結合して、正しいファイルパスを作成しています。

以上が、このPythonコードの解説です。

コードの実行

コードを保存できたら、このコードの実行してみましょう。Pythonのファイルを実行するには、前出のコマンド プロンプトを使用します。まず、cdコマンドで、作成したPythonのコードが書かれたファイルが入っているフォルダまで移動します。

C:\Users\nakat>cd C:\Users\nakat\Dropbox\new_world\python_code

コマンドプロンプトでは、以下のようなコマンドを実行することでPythonファイルを実行することができます。

python Pythonのコードが書かれたファイル名

今回は以下のようにファイル名を「filename_renamer.py」として、コマンド プロンプト上で以下のコマンドを実行してみましょう。

python filename_renamer.py

これで、与件通りに、ファイル名の書き換えが終わっているはずですですので、ご確認ください。

今回の解説記事は以上となります。

最後まで読んで頂いて、ありがとうございました。

コメント

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