首页 > 解决方案 > Python:按创建日期或文件名中的数字列出目录中的XML文件

问题描述

我有一个 Python (3.7) 脚本,它获取目录中所有文件的列表并在 for 循环中遍历它们。

我想要做的是确保只列出 XML 文件,并且文件列表按创建日期/时间或文件名中的数字排序。

目前使用:

files = [f for f in os.listdir(self.config['report_directory']) if os.path.isfile(os.path.join(self.config['report_directory'], f))]

以上方法可以很好地获取目录中的文件列表,但我无法按文件创建日期或文件名中的数字列出它。

文件名示例:

log_2983_report.xml
log_3948_report.xml
log_2198_report.xml

任何建议/帮助表示赞赏。

标签: pythonpython-3.x

解决方案


我已经用 替换了你self.config(...)dir,所以我可以在我的环境中检查它。

对于根据XML文件名中的编号排序,可以使用sorted带可选key参数的方法进行排序,根据文件名中的编号/创建/修改时间进行排序。

import os

dir = os.path.dirname(os.path.abspath(__file__))
files = sorted([f for f in os.listdir(dir) if os.path.isfile(os.path.join(dir, f)) and f.endswith('.xml')],
               key=lambda x: int(x.split('_')[1]))

print(files)

同样,您可以使用 key 排序为文件的修改/创建时间,os.path.getmtimeos.path.getctime. 有关如何以正确的方式为您的操作系统提取这些详细信息的完整说明,请参阅:

如何在 Python 中获取文件创建和修改日期/时间?


推荐阅读