Przeszukiwanie katalogów w Python
Jedną z zalet Python-a jest jego wieloplatformowość. Bardzo często da
się w tym języku napisać skrypt lub program, który bez zmian będzie
działał zarówno na Windowsach, jak i na różnego rodzaju
unixo-pochodnych systemach (linuxach, aixach czy solarisach).
Poniższy programik pozwala przejść strukturę katalogów w poszukiwaniu plików których nazwy pasują do zadanego wyrażenia regularnego. Zadanie to łatwo zrobić zarówno w Powershellu, jak i bashu, jednak programik ten łatwo można wykorzystać w większych projektach, w których potrzebujemy przeszukiwać system plików.
Program wykorzystuje funkcję os.walk do trawersowania systemu plików i re.match do dopasowania wzorca. Nie wymaga więc instalowania niczego spoza biblioteki standardowej Pythona. Kolejne znalezione pliki zwracane są przez generator, więc programik nie jest bardzo zasobożerny (przynajmniej w kwestii pamięci).
Poniższy programik pozwala przejść strukturę katalogów w poszukiwaniu plików których nazwy pasują do zadanego wyrażenia regularnego. Zadanie to łatwo zrobić zarówno w Powershellu, jak i bashu, jednak programik ten łatwo można wykorzystać w większych projektach, w których potrzebujemy przeszukiwać system plików.
Program wykorzystuje funkcję os.walk do trawersowania systemu plików i re.match do dopasowania wzorca. Nie wymaga więc instalowania niczego spoza biblioteki standardowej Pythona. Kolejne znalezione pliki zwracane są przez generator, więc programik nie jest bardzo zasobożerny (przynajmniej w kwestii pamięci).
'''program przechodzący przez katalogi podane w argumencie w poszukiwaniu plikow pasujacych do wyrazenia regularnego''' import os import re import sys def przeszukaj_katalogi(katalog_glowny,wzorzec): '''funkcja generujaca pliki w oparciu o wzorzec w zadanym katalogu''' for katalog,katalogi,pliki in os.walk(katalog_glowny): for plik in pliki: if re.match(wzorzec,plik): yield(katalog+os.sep+plik) #przyklad uzycia if __name__=='__main__': if len(sys.argv)<2: print('podaj wzorzec plikow ktore poszukujesz') sys.exit() elif len(sys.argv)<3: katalogi = ['.'] wzorzec = sys.argv[1] else: wzorzec = sys.argv[1] katalogi = sys.argv[2:] for katalog in katalogi: for plik in przeszukaj_katalogi(katalog,wzorzec): print(plik)
Brak komentarzy:
Prześlij komentarz