繁体   English   中英

使用 python 获取目录中包含最新时间戳的文件名

[英]Get the file name which contains the latest timestamp in a directory using python

可以说在一个目录中我有多个这样的文件:

Test1_2021-05-17 1139.xlsx
Test1_2021-04-17 1139.xlsx
Test1_2021-03-17 1139.xlsx
Test1_2021-02-17 1139.xlsx
Test1_2021-01-17 1139.xlsx
Test2_2021-05-17 1139.xlsx
Test2_2021-04-17 1139.xlsx
Test2_2021-03-17 1139.xlsx
Test2_2021-02-17 1139.xlsx

如何找到包含最新时间戳的文件,然后我想将其作为数据框打开。

所以,例如。 o 要获取文件名:Test1_2021-05-17 1139.xlsx。 我怎么能用 python 做到这一点?

我试过这个,但它没有让我得到名称上带有最新时间戳的文件:

import glob
import os

list_of_files = glob.glob('/path/*') 
latest_file = max(list_of_files, key=os.path.getctime)
print(latest_file)

如果您确实需要根据文件名进行制作,可以将lamdba function 传递给max() ,以正确修改项目:

fNames = '''.../0010/Test1_2021-05-17 1139.xlsx
.../1212/Test1_2021-04-17 1139.xlsx
.../1212/Test1_2021-03-17 1139.xlsx
.../1444/Test1_2021-02-17 1139.xlsx
.../1212/Test1_2021-01-17 1139.xlsx
.../19/Test2_2021-05-17 1139.xlsx
.../1212/Test2_2021-04-17 1139.xlsx
.../1212/Test2_2021-03-17 1139.xlsx
.../1212/Test2_2021-02-17 1139.xlsx'''.splitlines()

# use only files containing 'Test_1':
fNames = [f for f in fNames if 'test1_' in f.lower()]

# rsplit removes the directory names.
max_fName = max(
    fNames, key=lambda p: p.rsplit('/', 1)[1].split('_', 1)[1].split(' ', 1)[0]
)
print(max_fName)

#or hard coded:
max_fName = max(fNames, key=lambda p: p.rsplit('/', 1)[1][6:16])
print(max_fName)

出去:

.../0010/Test1_2021-05-17 1139.xlsx
.../0010/Test1_2021-05-17 1139.xlsx

也许您必须先过滤文件名:

import pathlib
import os.path
import pandas as pd

filename = max([f for f in pathlib.Path('/path').glob('Test_*.xlsx')], 
               key=os.path.getctime)

df = pd.DataFrame(filename)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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