Python でファイル名を一括変更する方法

 教室に通われている生徒様より「これからマクロを学習するなら、パイソンを学習したほうがいいでしょうか?」というご相談を頂きました。

 マクロにはマクロのいいところがあり、一概にYESとは言えませんが、将来性を考えたらその様な考え方もありかなと思います。


 最近頂いたリクエストで、フォルダ内のファイル名を一括変換したい、という内容のものがありました。ということで今回は「Pythonで実現するファイル名の一括変更」についてご紹介します。


 今回やりたいのは、下のように同一フォルダ内の複数のファイルの名前を一括で変更。

よくあるパターンとして、ファイル名の前に連番を振りたいと思います。例として2桁の連番にしておきます。

Pythonで一括リネーム(名前変更)
Pythonで一括名前変更

では早速、対象folderの1階層上のフォルダにPythonファイルを作成して、以下のコードを記述してみてください。


```python:

from pathlib import Path path = Path('./files') for i, file in enumerate(path.glob('*.xlsx')): file.rename(path / f'{i+1:02d}_{file.stem}.xlsx') ```

 

 Pythonでディレクトリ(フォルダ)のパスをオブジェクトとして操作するには、pathlibモジュール を使うととても便利です。pathlib の glob()メソッドを使うと、「file」というフォルダ内にある、拡張子「.xlsx」のファイルを取得することができます。また「stem属性」で、拡張子を除いたファイル名を取得することができます。

 これを「for文」を使って繰り返します。更新する変数には「i」を指定していますよ。

 変更後のファイル名は、for文の「i」を活用して、「i+1:02d」というコードを記述で2桁の連番の0埋めされた値を先頭に指定します。そこにアンダーバーとstem属性の値を追加することで、元のファイル名の頭に連番が付いたファイル名が出来上がることになります。

 さらにこのファイル名を「/演算子」をつかってpath変数に連結させ、変更後のファイル名が指定されます。


コード自体はとても短いですが、難しい要素が詰まっています。

ファイブボックスではオンライン授業、体験授業も行っているので、今回の授業にご興味がありましたら、ぜひお問い合わせください。

お問い合わせは こちら から。

体験授業のお申込みは こちら から。



ファイブボックス 上田教室