Pliki tekstowe i pathlib

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Pliki tekstowe i pathlib
Required In Progress

Python • kurs podstawowy • lekcja 24

Pliki tekstowe i pathlib

Zmienne znikają po zakończeniu programu; plik pozwala zachować dane.

Twój cel: Zapiszesz i odczytasz tekst w UTF-8, rozróżniając nadpisanie i dopisanie.

Napisy i funkcje; import wyjaśniono poniżej.

Od potrzeby do kodu

pathlib to moduł biblioteki standardowej, a from pathlib import Path udostępnia nazwę Path. Obiekt Path opisuje ścieżkę. Samo jego utworzenie nie tworzy pliku.

Ścieżka względna, np. notes.txt, jest liczona względem bieżącego katalogu roboczego, nie zawsze folderu pliku .py. Uruchamiaj ćwiczenia w osobnym folderze do nauki. write_text tworzy plik albo zastępuje całą jego zawartość. read_text odczytuje całość. encoding="utf-8" określa sposób zapisu znaków, w tym polskich liter.

Znak \n w napisie oznacza nową linię. with open(..., "a", ...) as file otwiera plik do dopisywania i zamyka go przy opuszczeniu bloku. Tryb "w" nadpisuje, "a" dopisuje, a domyślny "r" czyta. Nie testuj nadpisywania na ważnych dokumentach.

Przewidź przed uruchomieniem

from pathlib import Path

path = Path("notes.txt")
path.write_text("Żółw\n", encoding="utf-8")
with open(path, "a", encoding="utf-8") as file:
    file.write("Lis\n")
text = path.read_text(encoding="utf-8")
print(text, end="")
Porównaj wynik i prześledź mechanizm
Ścieżka wskazuje miejsce, tryb określa operację. Ponowne write_text resetuje zawartość.
Ścieżka wskazuje miejsce, tryb określa operację. Ponowne write_text resetuje zawartość.

Plik zawiera Żółw i Lis w dwóch liniach. Tryb a dopisuje Lis. Po zamianie na w drugie otwarcie usunie wcześniejszy tekst i pozostanie tylko Lis. end="" zapobiega dodatkowej nowej linii od print.

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

Żółw
Lis
Operacja Zawartość notes.txt
write_text Żółw + koniec linii
open w trybie a i write Żółw, potem Lis
read_text Odczyt bez zmiany pliku
Model do prześledzenia: porównaj każdy etap z kodem. Etykiety opisują znaczenie danych, nie tylko ich wygląd.

Zmień działający program

Po wykonaniu przykładu dopisz trzecią linię Kot i odczytaj całość. Poniższa samodzielna wersja odtwarza dane początkowe.

Pierwsza wskazówka

Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.

Porównaj swoją modyfikację
from pathlib import Path

path = Path("notes.txt")
path.write_text("Żółw\nLis\n", encoding="utf-8")
with open(path, "a", encoding="utf-8") as file:
    file.write("Kot\n")
print(path.read_text(encoding="utf-8"), end="")

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

Żółw
Lis
Kot

Znajdź przyczynę problemu

Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.

Zamierzone działanie: Znajdź plik zapisany przez program.

Program zapisany w folderze A uruchamiasz z folderu B. Szukasz notes.txt w A, lecz go tam nie ma.

Trop do diagnozy

Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.

Zastosuj w nowej sytuacji

Wskazówka do rozpoczęcia

Ścieżka wskazuje miejsce, tryb określa operację. Ponowne write_text resetuje zawartość.

Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:

from pathlib import Path
Rozwiązanie do samodzielnej kontroli
from pathlib import Path

path = Path("plan.txt")
path.write_text("Czytanie\n", encoding="utf-8")
with open(path, "a", encoding="utf-8") as file:
    file.write("Spacer\n")
print(path.read_text(encoding="utf-8"), end="")

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

Czytanie
Spacer

Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.

Co zabierasz do kolejnego programu?

Ścieżka wskazuje miejsce, tryb określa operację. Ponowne write_text resetuje zawartość.

Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.