gpt4 book ai didi

Python - 按修改日期 [小时] 分组文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:33 24 4
gpt4 key购买 nike

我正在使用以下脚本获取目录中的所有文件,然后根据修改日期过滤它们。

dir = '/tmp/whatever'
dir_files = os.listdir(dir)
dir_files.sort(key=lambda x: os.stat(os.path.join(dir, x)).st_mtime)
files = []
for f in dir_files:
t = os.path.getmtime(dir + '/' + f)
c = os.path.getctime(dir + '/' + f)
mod_time = datetime.datetime.fromtimestamp(t)
created_time = datetime.datetime.fromtimestamp(c)
if mod_time >= form.cleaned_data['start'].replace(tzinfo=None) and mod_time <= form.cleaned_data['end'].replace(tzinfo=None):
files.append(f)
return by_hour

我需要更进一步,按修改文件的时间对文件进行分组。有谁知道如何立即做到这一点?

更新:我想将它们放入字典中 ({date,hour,files})

更新:感谢你的回复!。我尝试使用 david 的响应,但当我输出结果时,它看起来如下所示(即它正在分解文件名):

defaultdict(<type 'list'>, {datetime.datetime(2013, 1, 9, 15, 0): ['2', '8', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '5', '1', '8', '4', '3', '.', 'a', 'v', 'i', '2', '9', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '5', '2', '0', '2', '4', '.', 'a', 'v', 'i', '3', '0', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '5', '3', '8', '5', '9', '.', 'a', 'v', 'i', '3', '1', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '5', '4', '1', '2', '4', '.', 'a', 'v', 'i', '3', '2', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '5', '5', '3', '1', '0', '.', 'a', 'v', 'i', '3', '3', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '5', '5', '5', '5', '8', '.', 'a', 'v', 'i'], datetime.datetime(2013, 1, 9, 19, 0): ['6', '1', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '9', '0', '1', '1', '8', '.', 'a', 'v', 'i', '6', '2', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '9', '0', '6', '3', '1', '.', 'a', 'v', 'i', '6', '3', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '9', '1', '4', '1', '5', '.', 'a', 'v', 'i', '6', '4', '-', '2', '0', '1', '3', '0', '1', '0', '9', '1', '9', '2', '2', '3', '3', '.', 'a', 'v', 'i']})

我希望它能存储完整的文件名。另外,我将如何遍历它并在每小时和它们所属的小时内抓取文件?

我设法通过将其更改为追加来解决上述问题。然而,它并没有按照从最早到最近的时间排序。

非常感谢,本

最佳答案

您可以使用以下行将 datetime 对象四舍五入到最接近的小时:

mod_hour = datetime.datetime(*mod_time.timetuple()[:4])

(这是因为 mod_time.timetuple()[:4] 返回一个类似 (2013, 1, 8, 21) 的元组。因此,使用 collections.defaultdict 保存列表字典:

import collections

by_hour = collections.defaultdict(list)
for f in dir_files:
t = os.path.getmtime(dir + '/' + f)
mod_time = datetime.datetime.fromtimestamp(t)
mod_hour = datetime.datetime(*mod_time.timetuple()[:4])
# for example, (2013, 1, 8, 21)
by_hour[mod_hour].append(f)

关于Python - 按修改日期 [小时] 分组文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14227419/

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