Python根据日期范围每天保存JSON响应

Python根据日期范围每天保存JSON响应,python,json,date,Python,Json,Date,例如,我们的日期范围为START=2019-01-01,END=2019-03-01 然后我们有两个功能: 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 : r

例如,我们的日期范围为START=2019-01-01,END=2019-03-01

然后我们有两个功能:

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,它将采用主日期范围,并将通过每天处理连续运行

例如。 如果日期范围为开始=2019-01-01,结束=2019-03-01

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

开始=2019-01-01,结束=2019-01-02 开始=2019-01-02,结束=2019-01-03 开始=2019-01-03,结束=2019-01-04 开始=2019-01-04,结束=2019-01-05 开始=2019-01-05,结束=2019-01-06 开始=2019-01-06,结束=2019-01-07 开始=2019-01-07,结束=2019-01-08 开始=2019-01-08,结束=2019-01-09 直到-开始=2019-02-28,结束=2019-03-01

在处理过程中,数据将附加到同一个文件中


编辑1:这是一种解决方法,可以在时间范围内每天提取数据,而不是在整个日期范围内求和

我在此假设您的代码包含一个存在两个变量的位置: 开始=2019-01-01,结束=2019-03-01

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


我不清楚你在问什么。是否要针对某个日期范围运行脚本,并在循环中的1天范围内调用该函数?如果是这样的话,为什么不直接发送SATRT并使用argparse或类似方法从main结束,然后在几天内循环?@doctorlove抱歉我的错误,完全理解你。。。如果我通过了我所解释的日期范围,我将每天收到结果,如果我输入完整的日期范围,将收到为期3个月的结果,此API不支持维度。。所以这就像是一个解决办法。如果你有任何选择如何使它每天,我会很高兴与任何解决方案…什么是开始和结束?字符串、datetime.date对象、其他?@SergeBallesta字符串或可用于此-datetime.date.today.strftime“%Y-%m-%d”
# 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)