Rozdział 15 · Python i akta

Dlaczego potrzebuję plików?

Zmienne znikają wraz z programem — pliki pozwalają na długotrwałe przechowywanie danych.

Gdzie znikają zmienne?

Mały program:

schet_igry.py
score = 1200
player = "Anna"

print(score)

Program się kończy. Gdzie teraz score oraz player? Uruchom program ponownie — zacznie on znowu od wartości score = 1200tak, jakby wcześniej nie było premiery.

Dokładne sformułowanie
Nie „wszystko w pamięci zostaje natychmiast wymazane” następne uruchomienie programu nie dziedziczy automatycznie Python obiektów z poprzedniego procesu. Podczas działania programu jego obiekty znajdują się w pamięci działającego procesu; gdy proces zostaje zakończony, ta pamięć jest uwalniana przez system operacyjny.
RAM · Pamięć procesowa
score = 1200
player = "Anna"
program kończy się
system plików
bez zapisu — nic
Bez zapisu do pliku stan programu nie przetrwa jego ukończenia.

Do danych przetrwał ukończenie programu — lista wyników gry, tekst, ustawienia — trzeba je zapisać w plik na dysku (lub inne trwałe przechowywanie) i odczyt przy kolejnym uruchomieniu.

Czym jest plik?

Plik to nazwany zbiór danychjest przechowywany w systemie plików.

Aby program mógł otworzyć wybrany plik, musi określić, gdzie plik się znajduje. Dla jest używany ścieżka pliku — zapis, który pokazuje jego położenie wśród folderów i plików. Na przykład:

primer_puti.py
# data/results.txt

Tutaj data to teczka, i results.txt jest plik w środku.

Ścieżka — to adres pliku
Na pierwsze poznanie ścieżkę można przedstawić jako adres pliku w systemie plików — tak samo jak adres domu pomaga go znaleźć wśród ulic i numerów. To tylko porównanie dla intuicji: ścieżka to zapis tekstowy, a nie fizyczny adres w pamięci komputera. Ścieżki absolutne i względne omówimy szczegółowo w rozdziale 15.6.

Ostatecznie zawartość pliku jest reprezentowana przez bajty. Jeśli plik zawiera tekst, Python musi wiedzieć, jak przekształcić te bajty na znaki i odwrotnie. Reguła takiej konwersji jest nazywana kodowanie – Porozmawiajmy o tym szczegółowo w sekcji 15.16 razem z różnicą str oraz bytes.

Otwieranie i odczytywanie istniejących plików

chtenie_fajla.py
file = open("privet.txt", "r", encoding="utf-8")   # „r”
content = file.read()
print(content)
file.close()   # koniecznie zamknij plik po pracy
Nie zapomnij o file.close()
Niezamknięty plik może nie zapisać zmian na dysku lub zablokować dostęp do niego dla innych programów. Zapomnij close() to bardzo częsty błąd popełniany przez początkujących.

Nowoczesny sposób: with

Ręczne zamknięcie → menedżer kontekstu with
Klasyczne podejście
file = open("privet.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close()   # łatwo zapomnieć!
Nowoczesna Python (with)
with open("privet.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)
# plik sam się zamknie, nawet jeśli w bloku wystąpi błąd
Co używać dzisiaj: with — istnieje w Python od wersji 2.5, więc nie chodzi o nowość, lecz o niezawodność: plik zamknie się automatycznie po opuszczeniu bloku with, nawet jeśli coś pójdzie nie tak wewnątrz. Począwszy od tego rozdziału w książce używamy właśnie with i zawsze wskazywać encoding="utf-8" jasno (więcej szczegółów w 15.16).
Praktyka: Czytaj pliki przez with
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →