【python】ファイル名を連番で変更(リネーム)する方法【同じフォルダ内のすべてのファイル.csvなど】 | ウルトラフリーダム

【python】ファイル名を連番で変更(リネーム)する方法【同じフォルダ内のすべてのファイル.csvなど】

Python3
本サイトでは記事内に広告が含まれています。

Pythonを使ってみようと思っても慣れていないうちは、どうしても処理に躓いてしまうものです。

例えば、pythonにて同じフォルダ(ディレクトリ)内のすべてのファイル名を連番となるよう変更(リネーム)するには、どのように対応すればいいのか理解していますか。

ここでは特に

・元のファイル名を考慮せずに新規のファイル名「renshuu_001」などとなるよう連番リネーム
・元のファイル名の一部を残しつつ連番を一括でつける

コードについて、実際の処理画像と共に解説していきます。

 

スポンサーリンク

同じディレクトリ内のすべてのファイルに同じ処理(csvを次々読み込み、excelに一括変換)【python】

それでは、Pythonにて指定フォルダ内のすべてのファイルに同じ処理(csvを次々読み込み、excelに一括変換)をする方法についてチェックします。

pandasとglobライブラリを活用しましょう。

前提としてが各ライブラリ、動作するように予め開発環境にてパッケージをインストールしてください。基本的にはコマンドラインから pip install pandas などと実行すればOKです(jupyter notebookなど)。

 

その上で以下のようなサンプルコードを書くといいです。

import glob
import pandas as pd
import os

os.chdir("C://sample7")

# フォルダ内の全てのCSVファイルを読み込む
csv_files = glob.glob('*.csv')  # 現在のディレクトリ内のCSVファイルを探す

# 各CSVファイルを読み込み、連番でリネームして再度CSVとして出力
for i, csv_file in enumerate(csv_files, start=1):
    # CSVファイルを読み込む
    df = pd.read_csv(csv_file)

    # 連番でリネームしてCSV形式で出力
    # "renshuu_"に三桁の連番をつけたファイル名を作る
    new_csv_file = f"renshuu_{i:03}.csv"
    df.to_csv(new_csv_file, index=False)

jupyter notebook上でのファイル名の連番変更(リネーム)の実行画面は以下の通り。

 

ポイントとしては、

・for文でループ処理する際には、enumerateを使い、ファイル名とインデックス(数字)を同時に取り出す

・pandasにてcsvやexcelファイルの読み込みや出力→for分で次々と同じ処理

・globにて、同じフォルダ内のすべてのファイル(拡張子なども指定できる)を読み込み

f"renshuu_{i:03}にて、renshuu_の後に001,002などとなるよう連番を振る(リネーム・変更)

ですね。

処理前のフォルダ内は以下の状態でした。

pythonでの連番リネーム処理を実行後は以下のようになっています。

ファイル名に連番を振った後の結果は以下の通り。

保存時は拡張子まで指定しましょう(.csvなど)。

 

出力フォルダを別にしたい場合【pythonで連番を振る(変更)】

ファイル名を連番リネームしたものを別のフォルダに格納する場合は、単純に出力フォルダも指定するといいです。

以下のように書きましょう。

df.to_csv("C://output_sample//"+new_csv_file, index=False)

 

すべて合わせた別フォルダに連番リネーム後のファイルを保存するコードは以下の通りです。

import glob
import pandas as pd
import os

os.chdir("C://sample7")

# フォルダ内の全てのCSVファイルを読み込む
csv_files = glob.glob('*.csv')  # 現在のディレクトリ内のCSVファイルを探す

# 各CSVファイルを読み込み、連番でリネームして再度CSVとして出力
for i, csv_file in enumerate(csv_files, start=1):
    # CSVファイルを読み込む
    df = pd.read_csv(csv_file)

    # 連番でリネームしてCSV形式で出力
    # "renshuu_"に三桁の連番をつけたファイル名を作る
    new_csv_file = f"renshuu_{i:03}.csv"
    df.to_csv("C://output_sample//"+new_csv_file, index=False)

状況に応じて使い分けましょう。

 

元のファイル名の一部を残して連番を作成する方法

連番を振る前のファイル名の一部(拡張子より前など)を残したい時もあるでしょう。

基本的には上と同じですが、

・元ファイル名と拡張子を分離

・元ファイル名+連番を振る

・再度拡張子を付ける

の流れで実行するといいです。

import glob
import pandas as pd

# フォルダ内の全てのCSVファイルを読み込む
csv_files = glob.glob('*.csv')  # 現在のディレクトリ内のCSVファイルを探す

# 各CSVファイルを読み込み、連番を追加して再度CSVとして出力
for i, csv_file in enumerate(csv_files, start=1):
    # CSVファイルを読み込む
    df = pd.read_csv(csv_file)

    # ファイル名から拡張子を取り除く
    base_name = csv_file.rsplit('.', 1)[0]

    # 連番を追加して新しいファイル名を作成
    new_csv_file = f"{base_name}_{i:03}.csv"
    df.to_csv(new_csv_file, index=False)

このあたりの基本操作は、自身で考えだすというよりも、当サイトなどを参考&暗記&経験を積むに徹した方がいいですね。

 

 

まとめ pythonでの連番作成(リネーム)方法【同じフォルダ内のすべてのファイル .xlsxなど】

ここでは、ファイル名を連番で変更(リネーム)する方法【同じフォルダ内のすべてのファイル.csvなど】を解説しました。

pythonでの処理はややこしい部分が多いので、この機会に理解しておくといいです。

pythonのさまざまな扱いに慣れ、効率よく作業を進めていきましょう。

コメント

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