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.txtTak
b.csvnie
c.txtTak
notes.mdnie
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
Otwórz praktykę →