Rozdział 15 · Python i akta
Wyszukiwanie plików: iterdir() i glob()
Często nie musisz otwierać konkretnego pliku, ale najpierw zrozum, co znajduje się w folderze.
Lista zawartości folderów
iterdir.py
from pathlib import Path
for item in sorted(Path("data").iterdir()):
print(item.name, "—", „folder” if item.is_dir() else „plik”)
Porządek nie jest gwarantowany
iterdir() nie obiecuje żadnego konkretnego porządku elementów. Jeśli kolejność jest ważna dla wyjścia lub testowania, należy opakować sorted(...)jak w powyższym przykładzie.Wyszukaj pliki według szablonu: glob()
glob_prosty.py
from pathlib import Path
for f in sorted(Path("data").glob("*.txt")):
print(f.name)
| Złóż data/ | Pasuje pod „*.txt” |
|---|---|
| a.txt | Tak |
| b.csv | nie |
| c.txt | Tak |
| notes.md | nie |
glob() jest jednym poziomem, rglob() jest rekurencyjny
Path("data").glob("*.txt") szuka tylko w samej folderze data. Aby przeszukiwać również wszystkie podfoldery, użyj Path("data").rglob("*.txt"). Nie uruchamiaj rekurencyjnego wyszukiwania na dużych folderach systemowych — to nie jest zabawka typu „skanuj cały dysk”Mini-projekt: raport według folderów
Zbieraj lista zawartość folderu uczącego się: nazwę, typ (plik/folder), rozszerzenie i rozmiar (dla
plików) — używając tylko iterdir() i atrybuty
Pathbez rekurencyjnego usuwania lub modyfikowania treści.
otchet_po_papke.py
from pathlib import Path
def otchet(papka: Path) -> list[str]:
stroki = []
for item in sorted(papka.iterdir()):
vid = „folder” if item.is_dir() else „plik”
razmer = f", {item.stat().st_size} bajtów" if item.is_file() else ""
stroki.append(f"{item.name} — {vid}{razmer}")
return stroki
for stroka in otchet(Path("data")):
print(stroka)
★★ Zadanie samodzielne
Tylko. json
Zmień raport, aby wyświetlał tylko pliki z . json rozszerzeniem używając glob(„*. json”
Praktyka: iterdir(), glob() i raport folderu
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji