【Python】globモジュールの便利な使い方

globモジュールとは

globは「まとまり」や「かたまり」といった意味があります。

Pythonのグラブモジュールを使うと、ワイルドカードなどの特殊文字を使って、条件を満たすファイル名、フォルダ名、などのパスの一覧を取得できます。

この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ファイルを一つにまとめる

iterrowsメソッドで複数のファイルを1つにまとめる

【Python】to_excelメソッドでCSVファイルをExcel形式に変換

Pythonの開発環境をAnacondaで整える~プログラム実行まで~

最新情報をチェックしよう!
>プログラミング 独学

プログラミング 独学

本当にプログラミングを学びたい人のためになるブログにしたいと思っていますので、些細なことでも気が付いたのであればご報告いただけると幸いです。

CTR IMG