Python:按文件名中的创建日期或编号列出目录中的XML文件

Python:按文件名中的创建日期或编号列出目录中的XML文件,python,python-3.x,Python,Python 3.x,我有一个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))] 上述方法可以很好地获取目录中的文件列表,但我

我有一个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

感谢您的任何建议/帮助。

我已将您的
self.config(…)
替换为
dir
,因此我可以在我的环境中检查它

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

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)
类似地,您可以使用作为文件修改/创建时间的键进行排序,或者。有关如何为操作系统正确提取这些详细信息的完整说明,请参阅:


你只想用一行就可以做到吗?@ranifisch,不,不管我需要多少行就可以做到。