查找文件的最后修改日期的特殊扩展
问题描述:
我已经写了下面的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
但为什么会发生这种情况?
答
os.walk
返回文件名相对于它正在行走的文件夹。例如。如果它正在使用名为bar
的文件在名为foo
的目录中漫游,它将返回bar
而不是foo/bar
。但是,由于您的脚本(大概)不在文件夹os
中,因此它需要一个绝对路径或相对于其自身的路径。因此,您必须加入到文件名的文件夹路径,以便python可以找到该文件。
由于docs说:
注意的是,在名单上的名字不包含路径组件。要获得完整路径(从顶部开始)到dirpath中的文件或目录,请执行os.path.join(dirpath,name)。
为什么碰巧与我不确定的文本文件一起工作。在包含脚本的文件夹中是否有相同名称的文本文件?
不,该文本文件与.tar文件位于同一文件夹中。而python脚本位于不同的文件夹中。 – drunkenfist 2014-09-30 16:09:21
@drunkenfist在脚本所在的同一目录中是否存在具有相同名称的文本文件?你在哪个操作系统上? – matsjoyce 2014-09-30 16:12:16
我在64位Ubuntu 14.04上运行。 python文件在Desktop /中。我在Desktop/sample/1 /里面有3个txt文件(a.txt,b.txt,c.txt)和一个tar文件(jdk-8.tar.gz)。 – drunkenfist 2014-09-30 16:46:55