首页 > 解决方案 > Python 根据日期范围每天保存 JSON 响应

问题描述

例如,我们有日期范围(START=2019-01-01,END=2019-03-01)

然后我们有2个功能:

1)做某事并保存对文件的响应的过程:

def job_function():
     # Date are part of parameters like this:
        dates.gt({}).lt({})'.format(START,END),
     # Here should be the code which ends up with :
        responseMain = requests.get(urlMain, params=params, headers=headers).json()
        with open(FILE_NAME, "a+") as outfile:
             outfile.write(json.dumps(responseMain))

2)主要的:

if __name__ == '__main__':

  for (something here? or something inside the function 1??) 
     sm_data(START,END)

我需要修改功能 1,它将采用主要日期范围并通过每天处理连续运行。

EG IF 日期范围为 (START=2019-01-01, END=2019-03-01)

功能 1 将在此日期持续运行:

直到 - START=2019-02-28,END=2019-03-01

在处理时,数据将附加到同一个文件

编辑 1:这是在时间范围内每天提取数据而不是按完整日期范围求和的解决方法

标签: pythonjsondate

解决方案


我在这里假设您的代码包含一个存在两个变量的位置:START=2019-01-01 和 END=2019-03-01。

您只需保存它们并编写一个循环,为每次迭代设置它们并调用sm_data

# ok START and END exist here
# convert them to datetime.date
fmt = '%Y-%m-%d'
cur = datetime.datetime.strptime(START, fmt).date()
end = datetime.datetime.strptime(END, fmt).date()
# prepare the loop:
delta = datetime.timedelta(days=1)
while cur < end:
    START = cur.strftime(fmt)      # current date
    cur += delta                   # next day
    END = cur.strftime(fmt)
    sm_data(START, END)

推荐阅读