在 python 中的目录中查找最新文件
Find the newest file in a directory in python
我正在尝试在目录中查找最新文件。但是,max() 返回一个 "max() arg is empty sequence error" 我什至尝试传递确切的路径而不是路径变量。
def function(path):
max(glob.iglob('path\*.map'), key=os.path.getctime)
...
有什么想法吗?
您的代码完美运行:
您是否未满 windows?
否则是 / 而不是 \
max(glob.iglob('path/*.map'), key=os.path.getctime)
并确保您在正确的路径下。
在您的函数中,path
作为参数传入,但是,您的 glob 规范使用的是文字字符串 'path\*.map'
。因此,除非您实际上有一个名为 path
的目录,其中包含 .map
个文件,否则 iglob()
将 return 一个空列表,并且 max()
将引发异常看。
相反,您应该将 path
变量的值替换为 glob 规范字符串:
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。
我正在尝试在目录中查找最新文件。但是,max() 返回一个 "max() arg is empty sequence error" 我什至尝试传递确切的路径而不是路径变量。
def function(path):
max(glob.iglob('path\*.map'), key=os.path.getctime)
...
有什么想法吗?
您的代码完美运行:
您是否未满 windows?
否则是 / 而不是 \
max(glob.iglob('path/*.map'), key=os.path.getctime)
并确保您在正确的路径下。
在您的函数中,path
作为参数传入,但是,您的 glob 规范使用的是文字字符串 'path\*.map'
。因此,除非您实际上有一个名为 path
的目录,其中包含 .map
个文件,否则 iglob()
将 return 一个空列表,并且 max()
将引发异常看。
相反,您应该将 path
变量的值替换为 glob 规范字符串:
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。