Python(pathlib)で Excel ブック名を連番付きに一括変更する手順

大量の Excel ファイルを納品先ごとに番号管理したい場合、手作業でリネームを行うのは時間もかかり誤入力のリスクもございます。本記事では pathlib を用いて、フォルダー内に保存された .xlsx ファイルへ連番を付与しながら一括でファイル名を変更する方法を解説いたします。


目次

1 . 想定ディレクトリー構成

project_root/
└─ reports/
├─ budget.xlsx
├─ forecast.xlsx
└─ summary.xlsx
  • reports フォルダーにある Excel ファイル(拡張子 .xlsx)を対象といたします。
  • 元のファイル名を保持しつつ、末尾へ 4 桁の連番を付与する運用を想定いたします。

2 . 必要ライブラリ

標準ライブラリのみで実装できますので、追加インストールは不要でございます。

from pathlib import Path

3 . サンプルコード

from pathlib import Path

# 対象フォルダーを指定
base_dir = Path('./reports')

# フォルダー内の .xlsx ファイルを取得し、連番でリネーム
for counter, file_path in enumerate(base_dir.glob('*.xlsx'), start=1):
    new_name = f'{file_path.stem}_{counter:04d}.xlsx'
    file_path.rename(file_path.with_name(new_name))

コード解説

説明
base_dir = Path('./reports')処理対象ディレクトリーを Path オブジェクトで指定いたします。
glob('*.xlsx')拡張子が .xlsx のファイルのみを抽出いたします。
enumerate(..., start=1)連番を 1 から付与し、counter:04d で 4 桁ゼロ埋め表記にいたします。
file_path.stem拡張子を除いた元ファイル名を取得し、連番を付加いたします。
file_path.rename()生成した新ファイル名でリネームを実行いたします。

4 . 実行結果

budget.xlsx   → budget_0001.xlsx
forecast.xlsx → forecast_0002.xlsx
summary.xlsx → summary_0003.xlsx

このように、元のファイル名を保持しつつ末尾へ連番が追加されます。並び順は glob() が返す結果(ファイルシステムの順序)に依存するため、アルファベット順や更新日時順にリネームしたい場合は sorted()key 引数を併用ください。


5 . 応用アイデア

要件実装例
サブフォルダーも再帰的に処理したいbase_dir.rglob('*.xlsx') を使用いたします。
連番の桁数を変更したいcounter:02dcounter:05d などへ変更ください。
連番を先頭へ付けたいnew_name = f'{counter:04d}_{file_path.stem}.xlsx' といたします。

まとめ

  • pathlib を活用すると、OS 依存コードを書かずにファイル操作を簡潔に記述できます。
  • enumerate と f-string のフォーマット指定子を組み合わせることで、ゼロ埋め連番 を容易に生成可能です。
  • 手作業によるリネームミスを防止するとともに、リネーム作業の工数を大幅に削減できますので、ぜひご活用くださいませ。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次