我目前正在使用fnmatch
查找我要复制的文件,并忽略其余文件:
下面是我的一些脚本,只是举例说明它是如何使用的。
pattern = "*.xlsx"
if fnmatch(name, pattern):
source_files.append(os.path.join(path, name))
我所意识到的是,目前这也是匹配的隐藏文件,我不想复制。
我看到3个解决此问题的方法:
~$
开头的文件。Update
开头且以.xlsx
我觉得描述我要复制的文件类型的最简单方法是使用正则表达式,但我不认为fnmatch接受完整的正则表达式。
你会推荐什么?
答案 0 :(得分:2)
使用fnmatch
能够排除docs
In [33]: fnmatch('hello.xlsx', '[!~]*.xlsx')
Out[33]: True
In [34]: fnmatch('~hello.xlsx', '[!~]*.xlsx')
Out[34]: False
至于您问题中的最后一条评论 - 如果您认为描述文件的最佳方式是使用正则表达式,为什么不将fnmatch
替换为re.match(...) is not None
?你必须使用fnmatch
吗?