Blog JSystems - uwalniamy wiedzę!

Szukaj

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’)

 

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...