Blog JSystems - z miłości do programowania

Moduł os i poruszanie się po systemie plików



Funkcja os.walk


os.walk to funkcja pozwalająca na przeszukiwanie katalogów. Jako argument przyjmuje ścieżkę startową (w minimalnej wersji konfiguracji), a następnie umożliwia nam iterację po wynikach. Ilustruje to poniższy przykład:


import os
for p in os.walk('D:\\skany'):
    print(p)


Wynika działania:



Iterując po wyniku otrzymujemy krotki. Pierwsza wartość (str) w elemencie to ścieżka katalogu którego dotyczą dalsze dane w krotce. Druga wartość w krotce to katalogi zawarte w danym folderze, trzecia to pliki. Walk pracuje rekurencyjnie, wejdziemy więc w głąb wszystkich katalogów. Możemy też zmienić kierunek przeszukiwania katalogów:


import os
for p in os.walk('D:\\skany',False):   
    print(p)


Ustawienie w drugim argumencie funkcji walk wartości fałsz zmienia kierunek przeszukiwania:



Ponieważ otrzymujemy krotki, możemy też odebrać dane do osobnych list. Przy okazji podrzucam patent na wizualizację drzewa:


import os
for katalog,podkatalogi, pliki in os.walk("d:\\skany"):
    print(f'KATALOG: {katalog}:')
    if(len(podkatalogi)>0):
        print(f'    PODKATALOGI: ')
        for po in podkatalogi:
            print(f'         {po}')
    if(len(pliki)>0):
        print(f'    PLIKI: ')
        for pl in pliki:
            print(f'         {pl}')


Wynik działania:



Poruszanie się po systemie plików


Zmiana i sprawdzenie aktualnego katalogu


Moduł os posiada wbudowane funkcje chdir i getcwd umożliwiające odpowiednio zmianę i sprawdzenie aktualnej ścieżki.


import os
os.chdir('d:\\skany')
print(os.getcwd())


 


Listowanie zawartości katalogu


Sprowadza się to do wywołania funkcji listdir:


print(os.listdir())


W efekcie uzyskamy zarówno pliki jak i katalogi w postaci jednej listy:


['201911161539.pdf', 'archiwum', 'nowe']


 


Sprawdzenie czy katalog istnieje


Sprowadza się to do wywołania funkcji exists:


import os
if os.path.exists('d:\\skany'):
    print('jest taki katalog')
else:
    print('nie ma takiego katalogu')


 


Sprawdzanie czy mamy do czynienia z plikiem czy z katalogiem


Moduł os ma dwie funkcje które umożliwią nam spełnić takie wymaganie – isdir i isfile weryfikujące odpowiednio czy mamy do czynienia z katalogiem czy z plikiem:


import os
if os.path.isdir('d:\\skany'):
    print('to jest katalog')
else:
    print('to jest plik')

if os.path.isfile('d:\\skany\\201907111505.pdf'):
    print('to jest plik')
else:
    print('to jest katalog')


 


Sprawdzanie wielkości pliku


Stosujemy funkcję getsize:


import os
size=os.path.getsize('d:\\skany\\201907111505.pdf')
print(f'wielkość pliku={size} bajtów')


Efekt na konsoli:


wielkość pliku=1262625 bajtów


 


Tworzenie i kasowanie katalogu


Istnieją do tego funkcje odpowiednio mkdir i rmdir


import os
os.mkdir('d:\\skany\\nowe')
os.rmdir('d:\\skany\\nowe')   


 


Kasowanie pliku


Sprowadza się do wywołania funkcji remove:


import os
os.remove(‘d:\\skany\\201907111505.pdf’)


 

Przyjdź do nas na szkolenie z języka Python! Mamy szereg szkoleń w ofercie, od podstawowych po aplikacje webowe z użyciem Django, analizę danych, tesowanie, machine learning i wiele innych.
Sprawdź dostępne szkolenia Python
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu!