業務をしていると複数のファイルに同じ処理を行うこともあると思います。
今回はデータを繰り返し処理する場合のコードを紹介します。
1.アウトプット
繰り返し処理を行うといったらfor文またはwhile文を考えると思います。
ファイルの数が分かっているのであれば回数を数字で指示すれば済みますが、処理するファイルが何個か分からない、毎回変動するといったことも多いと思います。
そこでここではfor文を使い、フォルダの中のファイル数を数え、その数だけ繰り返し処理をして以下2通りの種類の条件でファイルを保存します。
- ファイルと同じ階層に「結果」フォルダを作りその中へ保存
- ファイル名の頭に「別名_」と付けてファイルと同じ階層に保存

2.コードの紹介
上記の内容を実行する場合のコードは次のようになります。
from openpyxl import load_workbook
import glob, os
folder_path = 'C:/Users/1/Desktop/python/繰返し処理'
pattern = '*.xlsx'
search_path = os.path.join(folder_path, pattern)
file_list = glob.glob(search_path)
for i in file_list:
wb = load_workbook(i)
dir = os.path.dirname(i) #対象ファイルの1つ上の階層までのパス取得
name = os.path.basename(i) #対象ファイルの名前のみ取得
wb.save(dir+'/別名_'+name) #ファイル名を変えるパターン
wb.save(dir+'/結果/'+name) #他のフォルダに保存するパターン
各コードは次のような役割をしています。
import glob, os
glob:特定のファイルを取得するライブラリ
os:フォルダやファイルを操作するライブラリ
folder_path = ‘C:/Users/1/Desktop/python/繰返し処理’:対象ファイルが入っているフォルダのパス
pattern = ‘*.xlsx’:操作したいファイルの指定
search_path = os.path.join(folder_path, pattern):フォルダパス+ファイル名
file_list = glob.glob(search_path):指定したパスのファイルすべてをリストへ追加
for i in file_list; :リストに入れたファイルを1つずつ処理
このように対象ファイルのパスをファイルの手前とファイル名で区切り、「*」で指定の拡張子ファイルをすべて取得してリストに加えることで、1つ1つのファイルを処理するようにします。
ファイル名を変えずに上書き保存する場合は「wb.save(dir+name)でいいですが、今回のように元データを残しておきたい場合は名前を変えたり、別のフォルダに保存します。
3.終わりに
今回はフォルダ内のファイル数だけ繰り返し処理を行う説明のため、処理自体は保存をする単純なものでしたが、for文の中に処理を加えることで同じように複数ファイルを編集できます。
毎日大量のファイルに同じ処理を行う業務をしている場合は大幅な時間削減ができるのでぜひ試してみてください。

コメントを残す