Python 查找文件名中包含特定字符串的最新文件

1 投票
1 回答
862 浏览
提问于 2025-04-17 23:47

在一个文件夹里,我有很多文件。我想找出名字里包含“dog”的最新文件,不管它的后缀是什么。

path = 'my_path'
name = 'dog'
files = sorted([f for f in os.listdir(path) if f.????(name)])
recent = files[-1]
print "The most recent file with 'dog' in the name is :", recent

谢谢

1 个回答

2

这是你可以这样做的一种方法:

files = sorted((f for f in os.listdir(path) if f.find(name) != -1), 
               key=lambda f: os.stat(os.path.join(path, f)).st_mtime)
recent = files[-1]

sorted 函数有一个可选的参数 key,这个参数可以传入一个只需要一个参数的函数,这个函数会返回用于排序的关键值。上面的 lambda 表达式是根据 mtime(最后修改时间)来对数组进行排序的。这个 lambda 的用法要感谢这个回答

如果你不想使用 lambda 表达式,也可以直接用一个普通的函数:

def mtime(f): 
    return os.stat(os.path.join(path, f)).st_mtime

files = sorted((f for f in os.listdir(path) if f.find(name) != -1), key=mtime)

撰写回答