Вычисление предыдущей даты на один, два или три дня - PullRequest
0 голосов
/ 01 декабря 2018

Я рассчитываю предыдущую дату на один, два или три дня.У меня есть функция, которая делает это, но я хочу иметь возможность рассчитать правильную предыдущую дату на основе предыдущего существующего файла JSON.

Я знаю, что мне понадобится какое-то условное утверждение, но я не уверен, как к этому подойти.Затем эта переменная будет использоваться в цикле for для чтения содержимого файла предыдущего дня с файлом текущего дня для проведения некоторого анализа.Если файл предыдущего дня недоступен, его нужно будет увеличивать на единицу, пока файл не будет найден.

Мой код выглядит следующим образом:

def previous_day():
    previous_day = str(datetime.date.today() - datetime.timedelta(1))
    return str(previous_day)


def current_day():
    current_day = str(datetime.datetime.today().strftime('%Y-%m-%d'))
    return str(current_day)


with open(currentday + '.json', 'r') as f, open(previousday + '.json', 'r') as g:
    for cd, pd in zip(f, g):
        data_current = json.loads(cd)
        data_previous = json.loads(pd)

1 Ответ

0 голосов
/ 01 декабря 2018

Я не думаю, что вам вообще нужно беспокоиться о вычислениях даты, если вы просто пытаетесь найти 2 последних файла для сравнения, поскольку ваши имена файлов - это просто строки даты ISO.Вы можете просто получить все файлы в каталоге, отсортировать их и затем сравнить их в любом порядке.

Получить все имена файлов из каталога

import os

files = os.listdir('/home/foo/bar')
# if there are unneeded files or subdirectories, filter the resulting list

Сортировать файлы по дате по убыванию

files = ['2018-11-23.json', '2018-11-29.json', '2018-11-25.json']
files.sort(key=lambda f: f.split('.')[0], reverse=True)
# sort output: ['2018-11-29.json', '2018-11-25.json', '2018-11-23.json']

Открыть самые последние и следующие самые последние файлы для сравнения

with open(files[0], 'r') as latest, open(files[1], 'r') as previous:
    # compare files
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...