1,搜尋檔案,檔案過濾
這裡使用:pathlib 模組的 Path.glob(pattern) 方法,該方法可以用來過濾目標檔案,以迭代器的形式返回搜尋結果。
pattern: 萬用字元:"*.py":搜尋指定目錄下所有的py字尾檔案,只搜尋當前目錄,不搜尋子目錄。"**/*.py":搜尋指定目錄下所有的py字尾檔案,包括子目錄。"**" 模式表示 “此目錄以及所有子目錄,遞迴”。換句話說,它啟用遞迴通配:
檔名可以使用以下符號組合進行模式匹配:" * " 匹配0個或多個字元" ? " 僅匹配一個字元" [] " 匹配指定範圍內的字元,如[0-9]匹配數字2,用法:1,只遍歷當前目錄
import pathlib# 構建一個pathlib.Path()物件# 指定一個目錄起始點:"F:/path_test"p = pathlib.Path("F:/path_test")# 遍歷 F:/path_test目錄下,所有的 py 檔案# 只遍歷當前目錄ret = p.glob("*.py")for item in ret:print(item)""" 執行結果F:\path_test\01.pyF:\path_test\02.py"""2,遞迴遍歷
# ......# 遍歷 F:/path_test目錄及子目錄下 所有的 py 檔案# 遞迴遍歷所有子目錄ret = p.glob("**/*.py")for item in ret:print(item)""" 執行結果F:\path_test\01.pyF:\path_test\02.pyF:\path_test\src\11.pyF:\path_test\src\22.py"""3,Path.rglob() 遞迴遍歷
# ......# 遍歷 F:/path_test目錄及子目錄下 所有的 py 檔案# 遞迴遍歷所有子目錄# 這就像呼叫 Path.glob()時,萬用字元 pattern 前面添加了 "**/" 一樣ret = p.rglob("*.py")for item in ret:print(item)""" 執行結果F:\path_test\01.pyF:\path_test\02.pyF:\path_test\src\11.pyF:\path_test\src\22.py"""缺點:當目錄樹較大時,Path.glob() 耗時較長。
最新評論