2017/01/23

Przeszukiwanie katalogów

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).
'''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