在目录中我有很多文件。我想用" 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
由于
答案 0 :(得分: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,信用转到this answer。
如果您不想使用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)