[英]Using fnmatch to match 2 parts of a file name
我目前正在使用fnmatch
查找要復制的文件,而忽略其余文件:
以下是我的一些腳本,僅用於舉例說明其用法。
pattern = "*.xlsx"
if fnmatch(name, pattern):
source_files.append(os.path.join(path, name))
我已經意識到,這目前也與隱藏文件匹配,我不想復制這些文件。
我看到解決此問題的3種選擇:
~$
開頭的文件。 Update
開頭並以.xlsx
結尾的文件 我覺得描述我要復制的文件類型的最簡單方法是使用正則表達式,但是我不認為fnmatch接受完整的正則表達式。
你會推薦什么?
使用fnmatch
排除某些字符的功能,這也在文檔中指定
In [33]: fnmatch('hello.xlsx', '[!~]*.xlsx')
Out[33]: True
In [34]: fnmatch('~hello.xlsx', '[!~]*.xlsx')
Out[34]: False
至於問題中的最后一條評論-如果您覺得描述文件的最佳方法是使用正則表達式,為什么不用re.match(...) is not None
替換fnmatch
re.match(...) is not None
? 您必須使用fnmatch
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.