簡體   English   中英

使用 fnmatch 排除文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM