【发布时间】:2013-09-21 00:00:43
【问题描述】:
我正在尝试从目录创建文件的递归列表,然后根据年龄对它们进行排序。我不太关心文件扩展名,只关心最旧的文件。
这是我目前所拥有的,但它不是按日期排序的......
例如: /home/用户/文件夹/dir1 /home/用户/文件夹/dir2 /home/user/folder/dir3
def returnold():
for root, dirnames, filenames in os.walk(imagedir):
for filename in fnmatch.filter(filenames, '*.jpg, *.png'):
matches.append(os.path.join(root, filename))
return sorted(matches, key=lambda p: os.path.getctime(os.path.join(user_dir, p)))
imagedir = /home/user/folder
filelist = returnold()
老实说,我的目标是处理 home/user/folder 下的所有文件,首先处理最旧的文件。我需要先处理最旧的文件,而不是先处理 dir1/ 中的所有文件,然后再处理 dir2/ 中的所有文件,而不管它存在于该树结构中的什么位置。我的想法是我可以写一个 while list is not empty loop 来处理所有文件。如果有更好的方法,我很想学习。感谢您在此处添加的任何帮助。
【问题讨论】:
-
它是如何排序的?看起来没有错误(但我之前从未听说过
fnmatch)。 -
ctime不是创建时间。这是最后一次 inode 更改的时间。不幸的是,无法保证获取文件的实际年龄,但您可以使用mtime获取自上次修改以来文件的年龄。 -
感谢小次郎,帮了大忙!
标签: python python-2.7