查找具有特殊扩展名的文件的上次修改日期

时间:2014-09-30 15:48:37

标签: python

我已经编写了下面的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

但为什么会这样呢?

1 个答案:

答案 0 :(得分:0)

os.walk返回相对于它正在行走的文件夹的文件名。例如。如果它正在使用名为foo的文件走到名为bar的目录中,它将返回bar,而不是foo/bar。但是,由于您的脚本(可能)不在文件夹oswalk,因此它需要绝对路径或相对于自身的路径。因此,您必须将文件夹路径连接到文件名,以便python可以找到该文件。

正如docs所说:

  

请注意,列表中的名称不包含路径组件。要获取dirpath中文件或目录的完整路径(以top开头),请执行os.path.join(dirpath,name)。

为什么它恰好使用我不确定的文本文件。在包含脚本的文件夹中是否包含具有相同名称的文本文件?