python - 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
任何建议/帮助表示赞赏。
解决方案
我已经用 替换了你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.getmtime
或os.path.getctime
. 有关如何以正确的方式为您的操作系统提取这些详细信息的完整说明,请参阅:
推荐阅读
- python - 保存 json 添加反斜杠
- python - 如何对 Pandas 中的名词短语进行情感分析?
- mysql - 仅获取 1 个月以上的 mysql 记录
- python - 类型错误:Iniciar() 缺少 1 个必需的位置参数:“数据”并且附加失败
- python-3.x - 如何“复制和粘贴”我的光标悬停在 Python 脚本路径中的 URL
- python - 基于斜率的子集数据框
- spring - Spring:将两个 POST 字段映射到三个 RESULT 字段
- swiftui - 在 SwiftUI 中使用 ObservedRealmObject 更新领域对象上的附加字段
- javascript - 在 Puppeteer 中没有选择的 HTML 元素
- spring-boot - SpringBoot 和 Cassandra 分页