简体   繁体   中英

Getting the latest file name etc using glob.glob & max (os.path.getctime)

I am trying to get the file name of the latest file on a directory which has couple hundred files on a network drive.

Basically the idea is to snip the file name (its the date/time the file was downloaded, eg xyz201912191455.csv ) and paste it on a config file every time the script is run.

Now the list_of_files usually run in about a second but latest_file takes about 100 seconds which is extremely slow.

Is there a faster way to extract the information about the latest file?

The code sample as below:

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)

If the filenames already include the datetime, why bother getting their stat information? And if the names are like xyz201912191455.csv , one could use [-16:-4] to extract 201912191455 and as these are zero padded they will sort lexicographically in numerical order. Also recursive=True is not needed here as the pattern does not have a ** in it.

list_of_files = glob.glob('filepath\*')
latest_file = max(list_of_files, key=lambda n: n[-16:-4])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM