Dlaczego potrzebuję plików?
Zmienne znikają wraz z programem — pliki pozwalają na długotrwałe przechowywanie danych.
Gdzie znikają zmienne?
Mały program:
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.
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:
# data/results.txt
Tutaj data to teczka, i results.txt
jest plik w środku.
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
file = open("privet.txt", "r", encoding="utf-8") # „r”
content = file.read()
print(content)
file.close() # koniecznie zamknij plik po pracy
close() to bardzo częsty błąd popełniany przez początkujących.Nowoczesny sposób: with
file = open("privet.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close() # łatwo zapomnieć!
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
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).