ファイル名が「日付+○○」のファイルを毎日読み込んでいるんだけど、
日付が毎日変わるからコードを変えるのがめんどう!
コードを変えずに「○○」の部分だけ指定してファイルを読み込みたい!
そんなお悩みを、Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
部分一致指定でファイルを読み込むには[Python]
「glob」と簡単なfor文を使います。まずは事前準備について確認しましょう。
事前準備
- pandasのインストール
pandasのインストール方法
pandasを初めて使用される場合は、下記コードを入力・実行して、インストールしてください。
pip install pandas
※pandasを使用したことがある場合は、このインストール作業は不要です。
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import pandas as pd
import glob
files = glob.glob('*input*.xlsx')
for file in files:
df = pd.read_excel(file)
#任意の処理
df.to_excel('output.xlsx', index = None)
import glob
files = glob.glob('*input*.xlsx')
for file in files:
df = pd.read_excel(file)
解説
globの解説
「インポート」と「部分一致指定」を解説いたします。
globのインポート
部分一致での読み込みをするには、「glob」を使用します。
「glob」を使用するにはインポートが必要です。
下記の一文を記述してglobをインポートしましょう。
>>2.import glob
globで部分一致指定
files = glob.glob('*input*.xlsx')
for file in files:
df = pd.read_excel(file)
これらを記述することで、ファイル名の部分一致指定でファイルを読み込むことができます。
3行ワンセットで覚えておきましょう。
一部変数のところがありますが、名前を変えるとわかりにくくなるため、できるだけこのまま使ったほうがいいです。変えるのは「(’*input*.xlsx’)」と「read_excel」のところくらいでしょうか。
「*」や「?」の役割
前項で出てきた「*」ですが、「何でもいいので0文字以上の文字を含む」という指定になります。
ちょっとわかりにくいですね。
今回の場合ですと、「input」の前後に文字があっても無くても読み込めるというものです。
読み込むファイル名が「input.xlsx」でも読み込めますし、「4649input2024.xlsx」など、「input」の前後に何かついていても読み込むことができます。
「*」の他に「?」があります。
「?」は「1文字のみ」という役割で、「(‘?input?.xlsx’)」と指定した場合、「input.xlsx」は読み込めません(inputの前後に1文字無いため)
「9input1.xlsx」なら読み込めますが、「99input11.xlsx」は読み込めません(1文字ではないため)
*:0文字以上の文字
?:1文字
globで前方一致指定
「(‘input*.xlsx’)」と指定した場合、前方一致で読み込むことができます。
「input2024.xlsx」は読み込むことができますが、
「2024input.xlsx」は読み込むことができません(inputの前に文字があるため)
globで後方一致指定
「(‘*input.xlsx’)」と指定した場合、後方一致で読み込むことができます。
「2024input.xlsx」は読み込むことができますが、
「input2024.xlsx」は読み込むことができません(inputの後ろに文字があるため)
その他の解説
「read_excel」などは下記記事で解説しております。ご参考ください。
globの本来の使い方
部分一致指定でファイルを読み込む方法を解説いたしましたが、
本来globは、指定条件に一致するファイルを全て読み込む場合などに使われるもので、
今回の使い方は小技のようなものになります。
指定条件によっては2つ以上のファイルが読み込まれる場合もありますの。
ブログラム内容によっては誤作動の原因になることがありますのでご注意お願いします。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
Pythonを使った部分一致指定でファイルを読み込む方法を解説いたしました。
使い方に注意が必要ですが、かなり便利なものになりますので、ぜひ使ってみてください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!