python - 有没有办法通过文件名中的变量字符串过滤文件?
问题描述
我正在尝试使用通用模式过滤所有文件。为什么我不能放置一个变量模式来过滤。
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
解决方案
你为什么不直接使用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 字符串。
推荐阅读
- excel - 使用 VBA 时 Excel 小数分隔符发生变化
- c# - C# Visual Studio 2015 如何在具有多个项目的解决方案中添加按钮以启动新实例
- javascript - 使用js从客户端向php发送多个请求
- java - 如何指定与在 JAVA 8 中分离的相同设置对象的 JPA 关系
- json - 只需从 Json 文件中获取一些内容
- c# - MDIPArentForm:我正在使用 c# 中的一个项目,我有一个页面是 Menueform 这个表单我使用 MDIPArent 表单
- javascript - 在数组中获取空值
- c# - 加载强命名程序集,无论 Compact Framework 中的版本如何
- c# - 如何修复“本地主机指示您太多次”。MVC 中的错误
- javascript - axios 不适用于新 FormData() 的发布文件数据