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

我有一个我想循环的文件目录 (dir1),其中文件名采用以下格式:


20170605.000000

20170605.001000

20170605.002000

...

20170610.235000

我还有另一个时间相当不规则的目录(dir2),其中文件名采用以下格式:


20170604.235710

20170605.000427

20170605.093241

20170605.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 似乎只在几天内运行,而不是在几秒钟内运行。有没有我不知道/想到的更简单的方法?


精慕HU
浏览 239回答 2
2回答

隔江千里

你可以尝试做这样的事情——from datetime import datetimefrom datetime import timedeltadir1_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:&nbsp; &nbsp; associations[str(dir1_file)] = []&nbsp; &nbsp; for dir2_file in dir2_file_list:&nbsp; &nbsp; if 0 <= (dir1_file - dir2_file).total_seconds() <= 3600: # One hour timeframe&nbsp; &nbsp; &nbsp; &nbsp; associations[str(dir1_file)].append(str(dir2_file))然后打印 dictassociations以查看结果。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python