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

2024-09-29 19:07:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • abc_name.txt
  • def_name.txt
  • ghj_name.txt
  • abcdefghj.txt
  • xyz.txt

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

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

在python中如何实现这一点

非常感谢


Tags: 文件ofkeynametxt列表osdef
3条回答

你的代码是正确的。您可以使用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对文件所在的目录进行全局搜索,并可以很好地控制您正在测试的时间元素

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

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

一旦您有了这个列表,您就可以使用max函数来选择最新的列表

有关glob的文档可以在here找到

相关问题 更多 >

    热门问题