我已经编写了下面的Python脚本来查找文件的最后修改日期:
for root, dirs, files in os.walk(folder_path):
for f in files:
last_modified = datetime.fromtimestamp(os.path.getmtime(f)).day
#do something
此代码适用于.txt文件等普通文件。但是,如果它遇到带有.tar.gz或.run等扩展名的文件,则在查找last_modified时会抛出错误,说“没有这样的文件或目录”。
*编辑*
我意识到,如果我更改下面的代码,它可以正常工作。
for f in files:
name = os.path.join(root, f)
last_modified = datetime.fromtimestamp(os.path.getmtime(name)).day
#do something
但为什么会这样呢?
答案 0 :(得分:0)
os.walk
返回相对于它正在行走的文件夹的文件名。例如。如果它正在使用名为foo
的文件走到名为bar
的目录中,它将返回bar
,而不是foo/bar
。但是,由于您的脚本(可能)不在文件夹os
中walk
,因此它需要绝对路径或相对于自身的路径。因此,您必须将文件夹路径连接到文件名,以便python可以找到该文件。
正如docs所说:
请注意,列表中的名称不包含路径组件。要获取dirpath中文件或目录的完整路径(以top开头),请执行os.path.join(dirpath,name)。
为什么它恰好使用我不确定的文本文件。在包含脚本的文件夹中是否包含具有相同名称的文本文件?