Rozdział 23 · Część IV · Wdrażamy SafeSort

pathlib: pracujemy ze ścieżkami i katalogami

Path opisuje ścieżkę obiektu wraz z jego operacjami. Służy do budowy modelu danych SafeSort.

SafeSort · Część 4 z 6
Git i GitHubPlanowanieProjektWdrożenieTesty i CIPremiera

Wszystko, co SafeSort robi z plikami, zaczyna się od ścieżek. Moduł pathlib ze standardowej biblioteki opisuje ścieżkę nie jako łańcuch znaków, lecz jako Cel Path własnymi operacjami.

StringPath
"/home/anna/Downloads/report.pdf"Path("/home/anna/Downloads/report.pdf")
ręczne przeszukiwanie . split('/')gotowe atrybuty fajl.parent, fajl.name, fajl.suffix, fajl.stem
łączenie łańcuch znaków w celu połączenia ścieżekoperator / tworzy ścieżkę: koren / 'report.pdf'
pathlib_osnovy.py
from pathlib import Path

koren = Path("~/Downloads").expanduser()
fajl = koren / "otchet.pdf"
>>> fajl.name
'otchet.pdf'
>>> fajl.suffix
'.pdf'
>>> fajl.stem
'otchet'
>>> fajl.parent
PosixPath('/home/anna/Downloads')
Operator / dla torów
Klasa Path operator zostaje nadpisany /: nie dzieli liczb, lecz skleja część ścieżki nową nazwą, automatycznie podstawiając właściwy separator dla obecnego systemu operacyjnego. Zbieraj ścieżki przez konkatenację łańcuchów (koren + "/" + "otchet.pdf") nie jest potrzebne.

SafeSort: FileInfo Model danych

Skaner SafeSort nie ogranicza się do listy ścieżek. Opisuje każdy znaleziony plik Mały obiekt niezmienny:

src/safesort/models.py
@dataclass(frozen=True)
class FileInfo:
    path: Path
    size: int
    extension: str

frozen=True zabrania przypisywania pól już utworzonych FileInfo. Ta nieruchomość obiektu-wartości, a nie ochronę systemu plików. Funkcja może otrzymywać obiekt frozen i nadal zapisywać pliki, uzyskiwać dostęp do sieci lub wykonywać inne skutki uboczne.

Dane niezmienne nie oznaczają czystej funkcji
build_plan() nie zmienia dysku według osobnego kontraktu: API zwraca plan, implementacja nie wywołuje move/write, a test sprawdza brak zmian. frozen=True tylko nie pozwala przekazać pól modelu. To różne granice i obie są potrzebne.
Praktyka: operacje z Path
Interaktywny Laptop w przeglądarce: Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →
Oficjalna dokumentacja
pathlib — Object-oriented filesystem paths
dataclasses