[英]Exclude files with fnmatch
我正在 Python 中創建一個循環,該循環使用fnmatch.filter()
特定目錄中的所有文件。 目前我正在瀏覽特定文件夾中的所有 .csv 文件,如下所示:
for file_source in fnmatch.filter(os.listdir(source_dir), "*.csv")
我想要做的是排除模式為“Test*”的文件。 這是否可能與 fnmatch. 在最壞的情況下,我只會創建另一個內部 if 循環,但更喜歡更清潔的解決方案。
您可以使用列表理解來過濾文件名:
for file_source in [x for x in fnmatch.filter(os.listdir(source_dir), "*.csv") if 'Test' not in x ] :
pass
我不熟悉 fnmatch 但我試過了
if fnmatch.fnmatch(file, 'Test*'):
print(file)
它工作得很好。 您也可以按照 Chris 的建議使用列表理解。
這樣的事情怎么樣:
import re
import os
for file in os.listdir('./'):
rex = '^((?!Test).)*\.csv$'
reobj = re.compile(rex)
obj = reobj.match(file)
if obj != None:
print obj.string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.