读取文件名包含 python 中的字符串的最新文件

Read latest file with a filename contains string in python

假设我有一个这样的文件列表:

我知道如何使用 max(list_of_files, key=os.path.getmtime) 读取最新文件,但它可能是任何最后创建的文件。

我想读取名称中包含 'name' 且该文件是上次创建的文件(例如“def_name.txt”)。

我如何在 python 中做到这一点?

非常感谢。

您可以使用 os.glob(pattern) 获取与模式匹配的文件列表,其中模式是 unix-style shell 模式。在您的情况下,它将是 '*name*'.

获得此列表后,您可以使用 max 功能选择最新的列表。

可以找到关于 glob 的文档 here

您的代码是正确的。您可以使用 max(list_of_files, key=os.path.getmtime)。您将需要一个文件列表。要获取文件列表,

做这样的事情:

max([file for file in list_of_files if 'name' in file], key=os.path.getmtime)

假设你运行一个bash命令:

$ ch /tmp
$ touch abc_name.txt def_name.txt ghj_name.txt abcdefghj.txt xyz.txt

从 Python 开始,您可以使用 pathlib 对文件所在的目录进行 glob,并精确控制要测试的时间元素。

from pathlib import Path 

p=Path('/tmp')

max([fn for fn in p.glob('*.txt') if 'name' in str(fn)], key=lambda f: f.stat().st_mtime)

# /tmp/ghj_name.txt 

您还可以更改 glob,以便仅返回包含 name 的文件:

max([fn for fn in p.glob('*name*.txt')], key=lambda f: f.stat().st_mtime)

# same result