ハードウェア技術者のスキルアップ日誌

某家電メーカーの技術者がスキルアップのために勉強したことを記録するブログです

Python - フォルダ内の複数のファイルに対して同じ処理を実行

以前、シェルスクリプトでフォルダ内の複数ファイルに対して同じ処理を実行する方法について記事を書きました。

masaeng.hatenablog.com

今回は、Pythonコードで同じことを行う方法についてまとめたいと思います。

サンプルコード

以下は引数で指定したディレクトリパス以下のファイルに対して任意の処理をするPythonスクリプト(sample.py)です。パスの指定の仕方を3通り記載していますので、必要に応じて選択してください。

import glob
import re
import os
import argparse


def main():
    # parserを作成
    parser = argparse.ArgumentParser()
    parser.add_argument('dir_path', help='designate dir path')
    args = parser.parse_args()

    # ワイルドカードで条件を満たすパスの文字列を指定
    pathlist = glob.glob(args.dir_path + '/*.text')

    # python3.5以降 サブディレクトリも検索
    # **の部分があらゆる中間ディレクトリに対応
    pathlist = glob.glob(args.dir_path + '/**/*.text', recursive=True)

    # ファイル名のみを取得
    pathlist = [os.path.basename(p) for p in glob.glob(args.dir_path + '/**', recursive=True) if os.path.isfile(p)]

    for path in pathlist:
        ##ここで何か処理
        print(path)

if __name__ == '__main__':
    main()


実行例(カレントディレクトリ以下のファイルを指定)
 $ python sample.py ./

 

参考サイト

こちらを参考にさせていただきました。ありがとうございます。

Pythonで条件を満たすパスの一覧を再帰的に取得するglobの使い方 | note.nkmk.me

python — 特定のディレクトリ内のファイルを反復処理する方法