python - 使用 glob.glob & max (os.path.getctime) 获取最新的文件名等
问题描述
我正在尝试获取网络驱动器上有几百个文件的目录上最新文件的文件名。
基本上这个想法是剪断文件名(它是下载文件的日期/时间,例如xyz201912191455.csv
)并在config file
每次运行脚本时将其粘贴到 a 上。
现在list_of_files
通常运行大约一秒钟,但latest_file
需要大约 100 秒,这非常慢。
有没有更快的方法来提取有关最新文件的信息?
代码示例如下:
import os
import glob
import time
from configparser import ConfigParser
import configparser
list_of_files = glob.glob('filepath\*', recursive=True)
latest_file = max(list_of_files, key=os.path.getctime)
list_of_files2 = glob.glob('filepath\*', recursive=True)
latest_file2 = max(list_of_files2, key=os.path.getctime)
解决方案
如果文件名已经包含日期时间,为什么还要麻烦获取他们的统计信息?如果名称像xyz201912191455.csv
,则可以使用[-16:-4]
提取201912191455
,并且由于这些是零填充的,它们将按字典顺序按数字顺序排序。这里recursive=True
也不需要,因为模式中没有 a **
。
list_of_files = glob.glob('filepath\*')
latest_file = max(list_of_files, key=lambda n: n[-16:-4])
推荐阅读
- c# - 先卸载旧版本再安装新版本
- sql - UTM 到 LAT/LONG 的 T-SQL 转换
- android - 提供具有同步结果的异步库
- reactjs - 开玩笑 - 模拟 keydown "ArrowUp" 并调用函数
- docker - docker-compose 运行环境变量不存在
- r - 使用 reshape 将具有多列的宽数据重组为长数据时出错
- c++ - 使用新信号量库的 c++ 20 中的编译器失败
- node.js - 完成任务后Word Addin 高CPU。疑难解答
- c# - IAsyncEnumerator.Current 在未将枚举数集合强制转换为 List 时返回 null
- matlab - NARX 神经网络模型的外生输入可以是年度数据,目标变量是每日数据吗?