globモジュールでフォルダー内のファイルを一括で表示させる
globは「まとまり」や「かたまり」といった意味があります。
Pythonのglobモジュールを使うと、ワイルドカードなどの特殊文字を使って、条件を満たすファイル名、フォルダ名、などのパスの一覧を取得できます。
YouTubeでも解説しているので、お役立てください。
このglob関数を使ってフォルダー内のファイルを一括で表示するプログラムを作ってみます。
動画のExcelサンプルファイルは下ボタンからダウンロードできます。
check_date.py
import pandas as pd
import glob
# ファイルループ Excel形式のファイル名だけ取り出す
for excel_filename in glob.glob("*.xlsx"):
# ファイル名を表示
print("ファイル名"+excel_filename)
# Excelファイルの中身を読み込み
df = pd.read_excel(excel_filename,engine="openpyxl"))
# データの表示
print(df)
このプログラムのポイントはglobモジュールを使っている点です。 glob モジュールのglob 関数は、引数に指定したパターンに合うファイルの一覧を取得し、 for文に渡して繰り返し処理することができます。
glob 関数がファイルを探しに行くのは、カレントディレクトリ、つまり、現在プログラムファイルが置かれているフォルダ内です。 * (アスタリスク)記号をワイルドカードと呼び、 「*.xlsx」 と指定した場合は、 拡張子が xlsx で終わるファイルの一覧を返します。 JPEGファイルの一覧を取得したい場合は「*.jpg」 のように指定します。「フォルダ名/」を付けることで、 探す場所を特定のフォルダにしぼることもできます。 よく使われるパターンを以下にまとめました。
パターンマッチの例
as*
冒頭がas で始まるファイルやフォルダ
as*.txt
冒頭がas で始まるテキストファイル
src/*.jpg
カレントディレクトリ内の src フォルダ内にあるJPEGファイル
**/*.xlsx
カレントディレクトリ内のすべてのサブフォルダ内にあるExcelファイル
msoffcryptoでパスワードロックされたファイルを読み込む
パスワードロックされたExcelファイルを読み込むことができます。パスワード=“~”の部分がパスワードの指定なので、必要に応じて変更してください。
パスワードロックされたExcelファイルは暗号化されており、 そのままpandas で読み込むことができません。 msoffcrypto パッケージを使って、パスワードを解除し、 それを read_excel関数に渡す流れとなります。
check_data2.py
import pandas as pd
import glob
import msoffcrypto
import io
for excel_filename in glob.glob("*.xlsx"):
print("ファイル名:"+excel_filename)
with open(excel_filename,"rb") as excel_file:
file=msoffcrypto.OfficeFile(excel_file)
file.load_key(password="python")
data=io.BytesIO()
file.decrypt(data)
df=pd.read_excel(data)
print(df)
msoffcryptoは以下のコマンドでインストールしてください。
pip install msoffcrypto-tool
まず、glob 関数で取得したExcelファイルを、 open 関数を使ってバイナリデータとして読み込みます。 バイナリデータとは 「テキストデータではない」という意味ですが、 あまり深く考えなくてもかまいません。
msoffcrypto. Office File 関数でファイルを取得し、 load_key メソッドで読み取り用パスワードを指定します。 そのあとの io. ByteslO 関数が実際にファイルを読み込んでいる部分で、 decrypt メソッドを使って暗号化を解除します。 暗号化解除後のデータを read_excel関数に渡すと、 DataFrameオブジェクトが返されます。
PythonでExcelを操る他テクニック
openpyxlの使い方 Excelの差し込みがワンクリックで
tabulaのconvert_into関数でPDFファイルをExcelに変換
これは便利!Pythonのconcat関数で追記するプログラムをつくる
【Python】項目がバラバラなExcelファイルを一つにまとめる