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

Python查找从日期开始的每小时文件列表,python,list,date,Python,List,Date,我有一个要循环的文件目录(dir1),其中文件名采用以下格式: 20170605.000000 20170605.001000 20170605.002000 ... 20170610.235000 20170604.235710 20170605.000427 20170605.093241 20170605.172221 ... 20170611.000426 我还有另一个时间不规则的目录(dir2),其中文件名采用以下格式: 20170605.000000 20170605.00100

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

20170605.000000
20170605.001000
20170605.002000
...
20170610.235000
20170604.235710
20170605.000427
20170605.093241
20170605.172221
...
20170611.000426
我还有另一个时间不规则的目录(dir2),其中文件名采用以下格式:

20170605.000000
20170605.001000
20170605.002000
...
20170610.235000
20170604.235710
20170605.000427
20170605.093241
20170605.172221
...
20170611.000426
我想循环浏览dir1中的文件,然后从dir2中的文件创建一个列表,这些文件在dir1中的文件名之前的一个小时内。例如:

20170605.000000:获取dir2中从20170604.230000到20170605.000000的所有文件的列表 20170605.001000:获取目录2中从20170604.231000到20170605.001000的所有文件的列表 20170605.002000:获取dir2中从20170604.232000到20170605.002000的所有文件的列表

20170610.235000:获取dir2中从20170609.235000到20170610.235000的所有文件的列表


我已经分解了yyyy、mm、dd、hh、mm和秒的开始和结束范围,但是代码很快变得丑陋。我知道datetime可能会有所帮助,但delta似乎只在几天内运行,而不是几秒钟。有没有一种更简单的方法我不知道/没有想到?

IIUC,您可以使用
pd.to_datetime()
pd.series()
将列表转换为
datetime
系列,然后简单地使用字典理解返回所需的输出:

import pandas as pd
from datetime import datetime, timedelta

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

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

dir1 = pd.to_datetime(pd.Series(dir1), format='%Y%m%d.%H%M%S')
dir2 = pd.to_datetime(pd.Series(dir2), format='%Y%m%d.%H%M%S')

retrieved = {i: [j for j in dir2 if i-timedelta(hours=1) < j < i] for i in dir1}

你可以试着这样做-

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))
从日期时间导入日期时间
从日期时间导入时间增量
目录文件列表=['20170605.000000','20170605.001000','20170605.002000']
目录文件列表=['20170604.235710'、'20170605.000427'、'20170605.093241'、'20170605.17221']
dir1文件列表=[datetime.strtime(f,'%Y%m%d.%H%m%S'),用于dir1文件列表中的f]
dir2文件列表=[datetime.strtime(f,'%Y%m%d.%H%m%S'),用于dir2文件列表中的f]
关联=dict()
对于dir1_文件列表中的dir1_文件:
关联[str(dir1_文件)]=[]
对于dir2_文件列表中的dir2_文件:

如果0,你能为我们定义你所说的“获取”dir2中的文件是什么意思吗?这似乎正是我想要的。谢谢你的帮助!很高兴它有帮助!