首页 > 解决方案 > 使用 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)

标签: pythonlisttimemaxglob

解决方案


如果文件名已经包含日期时间,为什么还要麻烦获取他们的统计信息?如果名称像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])

推荐阅读