Тема 3. Коммит 1: Модуль хранения данных
- Создан модуль storage.py - Функция save_tasks_to_file() - сохранение в JSON - Функция load_tasks_from_file() - загрузка из JSON - Обработка ошибок: FileNotFoundError, JSONDecodeError
This commit is contained in:
1 parent
1c9e4a3ba8
commit
6a71058531
1 file changed
+44
+44
@@ -0,0 +1,44 @@
|
|||||||
|
"""
|
||||||
|
Модуль для сохранения и загрузки данных
|
||||||
|
Работа с файлами JSON
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
from task import Task
|
||||||
|
|
||||||
|
|
||||||
|
def save_tasks_to_file(tasks, filename="tasks.json"):
|
||||||
|
"""Сохранить список задач в файл JSON"""
|
||||||
|
data = []
|
||||||
|
for task in tasks:
|
||||||
|
data.append({
|
||||||
|
"title": task.title,
|
||||||
|
"description": task.description,
|
||||||
|
"completed": task.completed
|
||||||
|
})
|
||||||
|
|
||||||
|
with open(filename, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(data, f, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def load_tasks_from_file(filename="tasks.json"):
|
||||||
|
"""Загрузить список задач из файла JSON"""
|
||||||
|
try:
|
||||||
|
with open(filename, "r", encoding="utf-8") as f:
|
||||||
|
data = json.load(f)
|
||||||
|
|
||||||
|
tasks = []
|
||||||
|
for item in data:
|
||||||
|
task = Task(item["title"], item.get("description", ""))
|
||||||
|
if item.get("completed", False):
|
||||||
|
task.mark_complete()
|
||||||
|
tasks.append(task)
|
||||||
|
|
||||||
|
return tasks
|
||||||
|
except FileNotFoundError:
|
||||||
|
return []
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
print("Ошибка чтения файла. Данные могут быть повреждены.")
|
||||||
|
return []
|
||||||
Reference in new issue
Block a user