Rozdział 15 · Python i akta
Podsumowanie rozdziału: Zestaw narzędzi do plików
Od „gdzie idą zmienne”
Zestaw narzędzi do plików
Co wybrać dla konkretnych zadań
Potrzebna jest ścieżka
→
pathlib.Path
Potrzebuję aktualnego katalogu roboczego
→
Path.cwd()
Potrzebujesz folderu obok twojego . py-pliku
→
Path(__file__).resolve().parent
Mały UTF-8- plik tekstowy w całości
→
path.read_text() / write_text()
Przetwarzanie wiersz po wierszu lub tryb specjalny
→
with path.open( tryb, encoding=„utf-8”
Dopisanie bez utraty starej zawartości
→
open(path, „a”
Tworzyć, ale nie zastępować istniejącego pliku
→
open(path, „x”
Dane binarne w całości
→
path.read_bytes() / write_bytes()
Lista zawartości folderów
→
path.iterdir()
Wyszukaj pliki według szablonu
→
path.glob("*.txt")
Zagnieżdżona struktura danych
→
moduł json
Tabela z łańcuch znaków i kolumnami
→
moduł csv
Wielu użytkowników / transakcji
→
prawdopodobnie baza danych to nie jest prosty plik
Rozdział 15 całych
Wytrwałość
pamięć procesu — tymczasowa
trwałe przechowywanie przetrwa proces
ładowanie ≠ ten sam obiekt
System plików
plik vs folderze
bezwzględna vs względna ścieżka
CWD ≠ folder skryptów
pathlib.Path
ścieżka jako obiekt
name / stem / suffix / parent
read_text/write_text/read_bytes/write_bytes
Plik i with
open() → obiekt pliku
with gwarantuje zamknięcie
kursor przesuwa się do przodu tell()/seek()
Tekst i bajty
str jest zakodowany w bytes
UTF-8 oczywiście jest wyraźnym wyborem
znaki ≠ bajty
Dane strukturalne
JSON — struktury zagnieżdżone
CSV są tabelami, a nie split(„,”
bezpieczne oszczędzanie jest temp → replace
Praca z plikami
Wytrwałość
pamięć jest tymczasowa
magazyn przeżywa zakończenie procesu
Ścieżki
absolutne i względne
CWD
pathlib.Path
Plik
open/with
kursor, tell/seek
r/w/a/x tryby
Tekst i bajty
str/bytes
UTF-8
Dane strukturalne
JSON
CSV
co dalej
Rozdział 16: Tkinter-app
wykorzystuje to, co już wiemy
↓load_settings() / save_settings()
↓
settings.json
W rozdziale 16 („Budowanie fajnych aplikacji z Tkinter” load_settings()/save_settings() z sekcji 15.25, bez żadnej nowej linijki o plikach.
Czego nauczyliśmy się w tym rozdziale
- Obiekty Python żyją w pamięci procesu i nie przeżywają jego zakończenia — dane w trwałym magazynie plików mogą przeżyć zakończenie procesu.
- Ścieżka — nie zawartość pliku:
Path(...)tylko odnosi się do miejsca w systemie plików. - Ścieżka względna jest rozwiązywana względem aktualnego katalogu roboczego (CWD) — a nie folderu skryptów.
pathlib.Pathjest ścieżką jako obiektem: name/stem/suffix/parent i wygodne metody zamiast ręcznego składania łańcuch znaków.open()zwraca obiekt pliku;withzapewnia, że zamknięcie się nawet w przypadku błędu.- Plik posiada kursor — pozycję odczytu/zapisu, która przesuwa się do przodu i nie wraca sama; do tego jest
seek(). - Tryby
r/w/a/x- Inne ryzyko niż istniejąca zawartość."w"usuwa plik po otwarciu. - Tekst jest kodowany w bajtach – zawsze wyraźnie
encoding="utf-8", nie polegaj na domyślnym kodowaniu. - JSON przechowuje zagnieżdżone Python strukturach; CSV są tabelami; ani split(„,”
- Pliki ćwiczeń w przeglądarce (Pyodide) nie są plikami na twoim prawdziwym komputerze.