在python中找到目录中的最新文件

时间:2015-08-27 22:48:51

标签: python glob

我试图在目录中找到最新的文件。但是,max()返回" max()arg是空序列错误"我甚至试过传递确切路径而不是路径变量。

def function(path):
   max(glob.iglob('path\*.map'), key=os.path.getctime)
   ...

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在您的函数中,path作为参数传入,但是,您的glob规范使用文字字符串'path\*.map'。因此,除非您实际上有一个名为path的目录包含.map个文件,iglob()将返回一个空列表,max()将引发您看到的异常。

相反,您应该将path变量的值替换为glob spec string:

glob.iglob(r'{}\*.map'.format(path))

现在,假设路径和.map文件确实存在,您可以找到最新的文件。

此外,您应该使用os.path.join()来构建glob规范。您的功能将如下所示:

def most_recent_map_file(path):
    glob_pattern = os.path.join(path, '*.map')
    return max(glob.iglob(glob_pattern), key=os.path.getctime)

os.path.join()是首选,因为它将处理不同操作系统的不同路径分隔符 - Windows为\,* nix为/