Создайте словарь с ключом current_date, а значением будет количество выполнений кода в этот день Python - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужно создать список словарей, в которых ключ равен today's date, а значение - сколько раз код выполняется на today's date.

Я создал для l oop, который делает именно то, что Мне нужно, если я создаю список словарей с одной парой ключ-значение. Следующее:

# Todays's date in variable
this_day_0 = date.today()

# Format the day to be like 20200420
this_day = this_day_0.strftime("%Y%m%d")

created_today = [{"20200419": 0]

for index, time_dict in enumerate(created_today):
    if this_day in time_dict.keys():
        time_dict[this_day] += 1
    else:
        time_dict[this_day] = 1        

Итак, если бы я запустил его сегодня, 20 апреля, результат был бы следующим:

[{'20200419': 0, '20200420': 1}]

И если бы я запустил код еще раз, он бы увеличился на 20200420 значение 2. Вопрос в том, как начать с пустого списка created_today, потому что при работе существующий список created_today будет перезаписан «20200419»: 0 И мне нужно сохранять результаты ежедневно. Мой желаемый вывод будет выглядеть примерно так:

[{'20200419': 0, '20200420': 2, '20200421': 1, '20200422': 1}] and so forth

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Вот решение, которое использует пакет json для де-сериализации словаря и использования файлов для сохранения

import json
from datetime import date

try:
    with open('file.json', 'r') as f:
        contents = f.read() or '{}'
    data = json.loads(contents)
except (FileNotFoundError, json.JSONDecodeError) as e:
    data = {}

key = date.today().strftime("%Y%m%d")
value = data.get(key, 0)
data[key] = value + 1

with open('file.json', 'w+') as f:
    print(json.dumps(data), file=f)
0 голосов
/ 20 апреля 2020

Вы можете использовать файлы консервирования для сохранения словаря:

import pickle

this_day_0 = date.today()

this_day = this_day_0.strftime("%Y%m%d")

created_today = [{"20200419": 0}]

#load pickle to dictionary
with open('dict.pickle', 'rb') as dicto:
    created_today = pickle.load(dicto)

for index, time_dict in enumerate(created_today):
    if this_day in time_dict.keys():
        time_dict[this_day] += 1
    else:
        time_dict[this_day] = 1 

#save to pickle file
with open('dict.pickle', 'wb') as dicto:
    pickle.dump(created_today, dicto, protocol=pickle.HIGHEST_PROTOCOL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...