【问题标题】:How does one get all files in a directory with a specific pattern in their names in Python如何在 Python 中获取名称中具有特定模式的目录中的所有文件
【发布时间】:2013-05-14 07:47:18
【问题描述】:

我需要从具有特定结尾的目录中获取所有文件名。我想要从目录中获得的文件具有相同的名称但编号不同,其他文件存在于同一目录中。所有文件均按以下格式编号:

Project_Name_1.txt
Project_Name_2.txt
Project_Name_3.txt
Project_Name_14.txt
Project_Name_19.txt
Project_Name_31.txt 

文件的数量可能会有所不同。并且文件名(除了编号)取决于用户。 我正在寻找类似以下的内容:

[s for s in os.listdir(directory) if "*_*.txt" in s ]

glob.glob(directory, '*_?.txt')

【问题讨论】:

  • 您是否也想根据用户名(“project_Name_”部分)获取文件名,还是仅根据结尾(.txt、.pdf 等)获取文件名?
  • @eyquem “project_Name_”部分可以根据用户的不同而改变,所以请选择第一个

标签: python glob listdir


【解决方案1】:

怎么样

name = 'Project_Name'
glob.glob(os.path.join(directory, '{}_*.txt'.format(name)))

这会让像“Project_Name_SOMETHING.txt”这样的文件通过,所以你想在之后检查它们。

【讨论】:

  • 我想知道:写'{}_*.txt'.format(name)而不是%s_*.txt' % name有什么好处吗?
  • @eyquem - "这种字符串格式化方法是 Python 3 中的新标准,应该优先于新代码中字符串格式化操作中描述的 % 格式化。"
  • @eumiro 我知道这个建议,但我发现在简单情况下使用 %s 更具可读性。但是,如果即使对于简单的情况,format() 对 %s 也有优势,我会使用 format()。
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
相关资源
最近更新 更多