Python сохраняет ответ JSON ежедневно, основываясь на диапазоне дат - PullRequest
0 голосов
/ 05 марта 2019

Например, у нас есть диапазон дат (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 Если диапазон дат ЕСЛИ (START = 2019-01-01, END = 2019-03-01)

Функция 1 будет работать непрерывно с этой датой:

  • START = 2019-01-01, END = 2019-01-02
  • START = 2019-01-02, END = 2019-01-03
  • START = 2019-01-03, END = 2019-01-04
  • START = 2019-01-04, END = 2019-01-05
  • START = 2019-01-05, END = 2019-01-06
  • START = 2019-01-06, END = 2019-01-07
  • START = 2019-01-07, END = 2019-01-08
  • START = 2019-01-08, END = 2019-01-09

До START = 2019-02-28, END = 2019-03-01

А при обработке данные будут добавляться в тот же файл

EDIT 1: Это обходной путь для извлечения данных ЗА ДЕНЬ в пределах временного диапазона вместо СУММЫ НА ПОЛНЫЙ ДАТА ДИАПАЗОН

1 Ответ

1 голос
/ 05 марта 2019

Я предполагаю, что ваш код содержит место, где существуют две переменные: 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...