Przejdź do treści
Wróć do kursuProgramowanie / Lekcja 6 z 8

Lekcja 6 / dane poza programem

JSON, pliki i błędy: zapis poza programem

Program kończy działanie i zmienne znikają. Jeśli chcesz zachować postęp, zapisujesz dane do pliku. JSON jest prostym formatem, który dobrze pasuje do takiego zadania.

Sytuacja z pracy

Uczeń ukończył dwie lekcje. Chcesz, żeby po ponownym uruchomieniu programu tracker nadal pamiętał, które lekcje są ukończone.

Plik progress.json

{
  "course_name": "Python od podstaw",
  "completed_lessons": ["Zmienne", "Warunki"]
}

Co to jest JSON?

JSON to tekstowy format danych. Wygląda podobnie do słownika w Pythonie, ale jest zapisany w pliku. Dzięki temu dane mogą przetrwać poza jednym uruchomieniem programu.

Kod: odczyt pliku

import json

with open("progress.json", "r", encoding="utf-8") as file:
    progress = json.load(file)

print(progress["course_name"])
print(progress["completed_lessons"])

Wynik

Python od podstaw
['Zmienne', 'Warunki']

Kod: zapis zmiany

import json

with open("progress.json", "r", encoding="utf-8") as file:
    progress = json.load(file)

progress["completed_lessons"].append("Pętle")

with open("progress.json", "w", encoding="utf-8") as file:
    json.dump(progress, file, ensure_ascii=False, indent=2)

Co jeśli plik jest problemem?

Program nie powinien udawać, że wszystko jest dobrze. Jeśli plik nie istnieje albo JSON jest uszkodzony, lepiej pokazać czytelny komunikat niż dostać ścianę błędu.

Kod: try i except

import json

try:
    with open("progress.json", "r", encoding="utf-8") as file:
        progress = json.load(file)
except FileNotFoundError:
    print("Brakuje pliku progress.json")
except json.JSONDecodeError:
    print("Plik JSON jest uszkodzony")

Mini-zadanie

Odczytaj z pliku tylko course_name i wypisz go na ekranie.

Ćwiczenie praktyczne

Dodaj do completed_lessons lekcję "Listy i pętle", zapisz plik i otwórz go ręcznie, żeby zobaczyć efekt.

Quiz

Co robi json.load()?

Odczytuje JSON z pliku i zamienia go na dane Pythona.

Co robi json.dump()?

Zapisuje dane Pythona jako JSON.

Kiedy pojawia się FileNotFoundError?

Gdy program próbuje otworzyć plik, którego nie ma.

Co dalej?

Masz już dane, logikę i zapis. W następnej lekcji uporządkujesz to w klasę, żeby lekcja miała dane i zachowanie w jednym miejscu.

Lekcja 6: JSON, pliki i błędy: zapis poza programem | Python od podstaw | Mikołaj Mikołajczak