Python 使用glob.glob获取最新文件名等(&;max(os.path.getctime)
我正在尝试获取网络驱动器上有几百个文件的目录中最新文件的文件名 基本上,这个想法是在每次运行脚本时剪掉文件名(它是文件下载的日期/时间,例如Python 使用glob.glob获取最新文件名等(&;max(os.path.getctime),python,list,time,max,glob,Python,List,Time,Max,Glob,我正在尝试获取网络驱动器上有几百个文件的目录中最新文件的文件名 基本上,这个想法是在每次运行脚本时剪掉文件名(它是文件下载的日期/时间,例如xyz201912191455.csv),并将其粘贴到config文件上 现在,list\u\u\u文件通常在大约一秒钟内运行,但是最新的\u文件大约需要100秒,这非常慢 是否有更快的方法提取有关最新文件的信息 代码示例如下所示: import os import glob import time from configparser import Conf
xyz201912191455.csv
),并将其粘贴到config文件上
现在,list\u\u\u文件
通常在大约一秒钟内运行,但是最新的\u文件
大约需要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
,因为模式中没有**
list_of_files = glob.glob('filepath\*')
latest_file = max(list_of_files, key=lambda n: n[-16:-4])
可能不使用python函数。您是否考虑过在linux中使用操作系统功能,例如bash命令ls-t filepath/*|head-1
?如果您没有在搜索模式中使用**
,您可以将递归=False
,但我不确定这是否会节省大量时间。谢谢您的评论!我最初只搜索csv文件,但发现冗余,并测试了recursive=False,但速度没有提高那么多。这是一个很好的观点!我通常在有组合日期的文件夹上运行这些,但实际上当前的文件夹没有任何日期,所以我将试一试。干杯!这实际上将时间缩短到1.71秒!这个问题的完美解决方案!