获取目录中文件的过滤列表

新手上路,请多包涵

我正在尝试使用 Python 获取目录中的文件列表,但我不想要所有文件的列表。

我本质上想要的是能够执行以下操作,但使用 Python 而不是执行 ls。

 ls 145592*.jpg

如果没有内置方法,我目前正在考虑编写一个 for 循环来遍历 os.listdir() 的结果,并将所有匹配的文件附加到新列表中。

但是,该目录中有很多文件,因此我希望有一种更有效的方法(或内置方法)。

原文由 mhost 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 437
2 个回答
import glob

jpgFilenamesList = glob.glob('145592*.jpg')

参见 glob 在 python 文档中

原文由 Ignacio Vazquez-Abrams 发布,翻译遵循 CC BY-SA 4.0 许可协议

glob.glob() 绝对是这样做的方法(根据 Ignacio)。但是,如果您确实需要更复杂的匹配,您可以使用列表理解和 re.match() 来完成,如下所示:

 files = [f for f in os.listdir('.') if re.match(r'[0-9]+.*\.jpg', f)]

更灵活,但正如您所注意到的,效率较低。

原文由 Ben Hoyt 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏