gpt4 book ai didi

python - 创建一个递归排序的文件列表(从最旧的开始)

转载 作者:行者123 更新时间:2023-11-28 16:41:14 24 4
gpt4 key购买 nike

我正在尝试从一个目录创建一个文件的递归列表,然后根据年龄对它们进行排序。我不太关心文件扩展名,我只关心最旧的文件。

这是我目前所拥有的,但它不是按日期排序...

例如: /家/用户/文件夹/dir1 /家/用户/文件夹/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 来处理所有文件。如果有更好的方法,我很乐意学习。感谢您在此处添加的任何帮助。

最佳答案

我想我明白了..

import os
import fnmatch

def returnold(folder):
matches = []
for root, dirnames, filenames in os.walk(folder):
for filename in fnmatch.filter(filenames, '*.*'):
matches.append(os.path.join(root, filename))
return sorted(matches, key=os.path.getmtime)

nextimage = returnold('/path/to/folder')

这将返回一个按文件修改日期排序的列表,nextimage[0] 是最旧的,nextimage[-1] 是最新的。或者,如果您只想返回最旧的文件(而不是排序列表),您可以只返回列表的最小值,如下所示:

def returnold(folder):
matches = []
for root, dirnames, filenames in os.walk(folder):
for filename in fnmatch.filter(filenames, '*.*'):
matches.append(os.path.join(root, filename))
return min(matches, key=os.path.getmtime)


nextimage = returnold('/path/to/folder')

关于python - 创建一个递归排序的文件列表(从最旧的开始),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com