目次
Python3のPathlibでフォルダ以下のフォルダを再帰的に処理するBOKU的ひな形
仕事などで作業結果のチェックなどで、特定のフォルダ以下のファイルを再帰的に取得して、なにかしらの処理をする使い捨てツールを作ることがよくあります。
ツールでよく使う基本形と情報
そんなときの基本形。
という感じになります。
そして、その時の情報としてよく使うのが。
- ファイル名またはフォルダ名のみ取得
- フルパスを取得
- ファイルの親フォルダを取得
- ファイルの作成日時を取得
- ファイルの最終更新日時を取得
- ファイルの最終アクセス日時を取得
- ファイルのサイズを取得
です。
僕の場合、この程度の情報でおおむね作業はできてます。
ツールでよく使う基本形と情報のサンプルソース
Pythonの「Pathlib」を使ったサンプルです。
機能のごくごく一部しか使ってませんが。
import pathlib import datetime # 比較フォルダ指定 path = r"C:\01_samples\dj_wtv" # Windowsパスの「\」を[/」に変換する path01 = path.replace("\\", "/") + "/" # ファイルリストを再帰的に取得 files01 = list(pathlib.Path(path01).glob("**/*")) # ファイルリストから「Path」オブジェクトをひとつずつ取り出して処理する for file in files01: if file.is_file(): # ファイルの場合のみ実行する処理 print(file.name) # ファイル名のみ出力 print(file.as_posix()) # フルパス名でファイル名を出力 print(file.parent.as_posix()) # ファイルのあるフォルダ名のみ出力 # ファイルのサイズが(1024×1024)バイト=1MBより大きいものだけ処理する if file.stat().st_size >= (1024 * 1024): # 最終アクセス時刻 print( datetime.datetime.fromtimestamp( file.stat().st_atime).strftime('%Y年%m月%d日 %H:%M:%S')) # Windows では作成時刻 Unix ではメタデータの最終更新時刻 print( datetime.datetime.fromtimestamp( file.stat().st_ctime).strftime('%Y年%m月%d日 %H:%M:%S')) # 最終内容更新時刻 print( datetime.datetime.fromtimestamp( file.stat().st_mtime).strftime('%Y年%m月%d日 %H:%M:%S')) # ファイルサイズ print(file.stat().st_size) print("------------------") if file.is_dir(): # ディレクトリの場合のみ実行する処理 print(file.name) # フォルダ名のみ出力 print(file.as_posix()) # フルパスでフォルダ名を出力 print("------------------")
コメントを見れば、特に補足説明はいらないと思います。
ではでは。