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:
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())
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']
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')
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')
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
Istnieją do tego funkcje odpowiednio mkdir i rmdir
import os
os.mkdir('d:\\skany\\nowe')
os.rmdir('d:\\skany\\nowe')
Sprowadza się do wywołania funkcji remove:
import os
os.remove(‘d:\\skany\\201907111505.pdf’)
Komentarze (0)
Brak komentarzy...