为了账号安全,请及时绑定邮箱和手机立即绑定

Python从日期中查找每小时的文件列表

Python从日期中查找每小时的文件列表

精慕HU 2021-09-14 16:24:42
我有一个我想循环的文件目录 (dir1),其中文件名采用以下格式:20170605.00000020170605.00100020170605.002000...20170610.235000我还有另一个时间相当不规则的目录(dir2),其中文件名采用以下格式:20170604.23571020170605.00042720170605.09324120170605.172221...20170611.000426我想遍历 dir1 中的文件,然后从 dir2 中的文件创建一个列表,这些文件位于 dir1 中文件名称的过去一小时内。例如:20170605.000000:得到20170604.230000所有DIR2中的文件的列表 - 20170605.000000 20170605.001000:从20170604.231000得到所有DIR2中的文件的列表 - 20170605.001000 20170605.002000:从20170604.232000得到所有DIR2中的文件的列表 - 20170605.002000....20170610.235000:从 20170609.235000 - 20170610.235000 获取 dir2 中所有文件的列表我已经分解了 yyyy、mm、dd、hh、mm 和 seconds 的开始和结束范围,但是代码很快变得难看。我知道 datetime 会有所帮助,但 delta 似乎只在几天内运行,而不是在几秒钟内运行。有没有我不知道/想到的更简单的方法?
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

你可以尝试做这样的事情——


from datetime import datetime

from datetime import timedelta


dir1_file_list = ['20170605.000000', '20170605.001000', '20170605.002000']

dir2_file_list = ['20170604.235710', '20170605.000427', '20170605.093241', '20170605.172221']


dir1_file_list = [datetime.strptime(f, '%Y%m%d.%H%M%S') for f in dir1_file_list]

dir2_file_list = [datetime.strptime(f, '%Y%m%d.%H%M%S') for f in dir2_file_list]


associations = dict()

for dir1_file in dir1_file_list:

    associations[str(dir1_file)] = []


    for dir2_file in dir2_file_list:

    if 0 <= (dir1_file - dir2_file).total_seconds() <= 3600: # One hour timeframe

        associations[str(dir1_file)].append(str(dir2_file))

然后打印 dictassociations以查看结果。


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信