pathlib
Ścieżki jako obiekty: łączenie operatorem /, odczyt części ścieżki oraz praca z plikami.
Przykład
#from pathlib import Path
lesson = Path("kursy") / "python" / "lekcja_01.py"
print(lesson)
print(lesson.name)
print(lesson.stem, lesson.suffix)
print(lesson.parent)
print(lesson.with_suffix(".md"))Wynik dla Linuksa i macOS. W systemie Windows ścieżki zostaną wypisane z ukośnikami wstecznymi, np. kursy\python\lekcja_01.py.
Definicja i zastosowanie
#Moduł pathlib reprezentuje ścieżki jako obiekty klasy Path, a nie zwykłe napisy. Kolejne części łączy się operatorem /: Path("kursy") / "python". Separator jest dobierany automatycznie, więc ten sam kod działa w systemach Windows, Linux i macOS.
Obiekt ścieżki ma atrybuty opisujące jej części: name (pełna nazwa pliku), stem (nazwa bez rozszerzenia), suffix (rozszerzenie) i parent (katalog nadrzędny). Metody takie jak with_suffix() czy with_name() tworzą nowe ścieżki bez dotykania dysku.
Pozostałe metody działają już na plikach: exists(), is_file(), mkdir(), read_text(), write_text(), unlink() (usunięcie pliku) oraz glob() i rglob() do wyszukiwania plików według wzorca. W nowym kodzie pathlib jest zalecaną alternatywą dla funkcji z os.path.
Składnia
#from pathlib import Path
Path("katalog") / "plik.txt"
sciezka.name, sciezka.stem, sciezka.suffix, sciezka.parent
sciezka.read_text(encoding="utf-8")
sciezka.write_text(tekst, encoding="utf-8")
sciezka.glob(wzorzec)Więcej przykładów
#from pathlib import Path
notes = Path("notatki.txt")
notes.write_text("Pętla for\nSłowniki\n", encoding="utf-8")
print(notes.exists())
print(notes.read_text(encoding="utf-8").splitlines())
notes.unlink()
print(notes.exists())from pathlib import Path
src = Path("projekt") / "src"
src.mkdir(parents=True, exist_ok=True)
for name in ["main.py", "utils.py", "README.md"]:
(src / name).write_text("", encoding="utf-8")
print(sorted(path.name for path in Path("projekt").rglob("*.py")))Wynik zakłada, że katalog projekt wcześniej nie istniał albo nie zawierał innych plików .py.
Dobre praktyki
#- Przy
read_text()iwrite_text()zawsze podawajencoding="utf-8", żeby polskie znaki działały tak samo w każdym systemie. - Obiekt
Pathmożesz przekazać bezpośrednio doopen()i większości funkcji przyjmujących ścieżkę. Na napis zamienisz go przezstr(). Path.cwd()zwraca bieżący katalog, aPath.home()katalog domowy użytkownika.
Powiązane hasła
#- osWspółpraca z systemem operacyjnym: ścieżki, katalogi, pliki i zmienne środowiskowe.
- open()Otwiera plik do odczytu lub zapisu i zwraca obiekt pliku.
- withMenedżer kontekstu: automatyczne przygotowanie i sprzątanie zasobów.
- jsonZamienia dane Pythona na tekst JSON i z powrotem. Podstawa zapisu danych i komunikacji z API.
- str.endswith()Sprawdza, czy napis kończy się podanym fragmentem.
Widzisz błąd albo brakuje przykładu? Napisz do nas.