簡體   English   中英

使用fnmatch匹配文件名的2個部分

[英]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種選擇:

  1. 我可以排除整個隱藏文件。
  2. 我可以排除以~$開頭的文件。
  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.

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