← До списку лабораторних по Python
Повний опис / сценарій лабораторної:
Meta: зрозуміти коли краще використовувати JSON, а коли pickle або інші формати.
Krok 1. Створити файл src/app/serialize20.py.
Komandi: cd ~/python_lab1/src; touch app/serialize20.py
Krok 2. Додати приклад складної структури даних.
Komanda: printf "import json
import pickle
from pathlib import Path
DATA = {
"users": [
{"id": 1, "name": "Taras"},
{"id": 2, "name": "Oksana"},
],
"meta": {"version": 1, "ok": True},
}
BASE = Path("data20")
BASE.mkdir(exist_ok=True)
" > app/serialize20.py
Krok 3. Додати функцію збереження у JSON.
Komanda: printf "import json
import pickle
from pathlib import Path
DATA = {
"users": [
{"id": 1, "name": "Taras"},
{"id": 2, "name": "Oksana"},
],
"meta": {"version": 1, "ok": True},
}
BASE = Path("data20")
BASE.mkdir(exist_ok=True)
def save_json():
(BASE / "data.json").write_text(json.dumps(DATA, indent=2))
def load_json():
return json.loads((BASE / "data.json").read_text())
def save_pickle():
(BASE / "data.pkl").write_bytes(pickle.dumps(DATA))
def load_pickle():
return pickle.loads((BASE / "data.pkl").read_bytes())
if __name__ == "__main__":
save_json()
save_pickle()
print(load_json())
print(load_pickle())
" > app/serialize20.py
Krok 4. Запустити модуль і перевірити створення файлів.
Komанда: export PYTHONPATH=$(pwd); python app/serialize20.py; ls data20
Krok 5. Порівняти розмір файлів.
Komanda: ls -lh data20
Krok 6. Відкрити JSON у текстовому редакторі.
Komanda: cat data20/data.json
Poyasnennya: формат читабельний для людини.
Krok 7. Занотувати ризики pickle щодо безпеки при завантаженні з недовірених джерел.
Krok 8. Продумати випадки де потрібен саме JSON наприклад для API.
Krok 9. Згадати інші формати серіалізації які застосовуються у прод середовищі наприклад msgpack або protobuf.
Krok 10. Mini zvit.
Zavdannya: опиши чим ти керуватимешся обираючи формат зберігання для конфігів і кешу.