首页 > 解决方案 > 有没有办法通过文件名中的变量字符串过滤文件?

问题描述

我正在尝试使用通用模式过滤所有文件。为什么我不能放置一个变量模式来过滤。

listOfFiles = os.listdir('.')
casenr = str(nr)
pattern = "*"+str(nr)+"_*.state"
for entry in listOfFiles:
    if fnmatch.fnmatch(entry, pattern):
        statefile = entry
print(statefile)

我希望找到一个名为

init_8_abc.txt

标签: python

解决方案


你为什么不直接使用glob?按照您的示例,您可以执行以下操作:

import glob

pattern = f'/path/to/directory/with/files/*{str(nr)}_*.state'
files = glob.glob(pattern)

for file in files:
    doSomething(file)

glob允许使用通配符搜索具有特定模式的文件*(您可以在模式的任何部分使用通配符,例如在多个子目录中搜索)。请参阅文档。另请注意,仅 python >3.6 支持使用 f 字符串。


推荐阅读