Wzorce glob i iterowanie
Znajduj pliki za pomocą wzorców glob
Wzorce glob i iterowanie to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Wyszukiwanie plików
pathlib ułatwia wyświetlanie zawartości katalogów i wyszukiwanie plików pasujących do wzorca. Najważniejsze metody to iterdir, glob i rglob.
Przygotowanie przykładowego drzewa
Aby poznać te metody, najpierw utworzymy niewielki katalog plików. Przygotowanie wykorzystuje wyłącznie bibliotekę standardową.
from pathlib import Path
root = Path('sample')
root.mkdir(exist_ok=True)
(root / 'a.txt').write_text('1')
(root / 'b.txt').write_text('2')
(root / 'c.log').write_text('3')
print('created files')iterdir wyświetla zawartość
iterdir() zwraca kolejno każdy wpis znajdujący się bezpośrednio w katalogu, po jednym obiekcie Path dla każdego elementu.
from pathlib import Path
root = Path('sample')
for entry in sorted(root.iterdir()):
print(entry.name)glob ze wzorcem
glob() wyszukuje wpisy pasujące do wzorca w stylu powłoki. Symbol wieloznaczny * dopasowuje dowolny ciąg znaków.
from pathlib import Path
root = Path('sample')
for txt in sorted(root.glob('*.txt')):
print(txt.name)Symbol wieloznaczny dla jednego znaku
Symbol wieloznaczny ? dopasowuje dokładnie jeden znak, co przydaje się w przypadku nazw o stałej długości.
from pathlib import Path
root = Path('sample')
for m in sorted(root.glob('?.txt')):
print(m.name)Zakresy znaków
Nawiasy kwadratowe dopasowują dowolny pojedynczy znak z określonego zbioru lub zakresu, podobnie jak w mechanizmie globowania powłoki.
from pathlib import Path
root = Path('sample')
for m in sorted(root.glob('[ab].txt')):
print(m.name)Rekurencyjny glob za pomocą rglob
rglob() przeszukuje katalog i wszystkie jego podkatalogi. Jest równoważne wywołaniu glob('**/pattern').
from pathlib import Path
root = Path('sample')
(root / 'nested').mkdir(exist_ok=True)
(root / 'nested' / 'deep.txt').write_text('x')
for m in sorted(root.rglob('*.txt')):
print(m)Zliczanie dopasowań
Wyniki glob są iteratorami. Należy opakować jeden z nich w list(), aby policzyć dopasowania lub użyć ich ponownie.
from pathlib import Path
root = Path('sample')
txts = list(root.rglob('*.txt'))
print('found', len(txts), 'text files')Filtrowanie podczas iteracji
Globowanie można połączyć ze sprawdzaniem za pomocą is_file lub is_dir, aby precyzyjnie filtrować wyniki.
from pathlib import Path
root = Path('sample')
files = [p for p in root.iterdir() if p.is_file()]
for f in sorted(files):
print(f.name)Przetwarzanie znalezionych plików
Po uzyskaniu dopasowań można odczytać każdy plik. W tym przykładzie sumujemy zawartość wszystkich plików tekstowych w drzewie.
from pathlib import Path
root = Path('sample')
total = 0
for p in root.rglob('*.txt'):
text = p.read_text().strip()
if text.isdigit():
total += int(text)
print('total:', total)Sortowanie wyników glob
Globowanie nie gwarantuje określonej kolejności. Gdy potrzebne są deterministyczne wyniki, na przykład podczas tworzenia raportu, należy opakować wyniki w sorted().
from pathlib import Path
root = Path('sample')
for p in sorted(root.glob('*'), key=lambda x: x.name):
print(p.name)Szybkie sprawdzenie
Czym różnią się glob i rglob?
Podsumowanie
Poznali Państwo sposób wyszukiwania plików za pomocą wzorców glob.
iterdirwyświetla zawartość bezpośrednią katalogu.globdopasowuje wzorzec (*,?,[...]).rglobprzeszukuje katalogi rekurencyjnie.- Globowanie można łączyć z filtrami
is_file/is_dir, a następnie odczytywać dopasowane pliki.
Często zadawane pytania
Czy lekcja „Wzorce glob i iterowanie” jest bezpłatna?
Tak — pełny tekst „Wzorce glob i iterowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wzorce glob i iterowanie”?
Znajduj pliki za pomocą wzorców glob Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wzorce glob i iterowanie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Obiekt Path
- Odczyt i zapis plików
- Wzorce glob i iterowanie
- Operacje na ścieżkach