Video Corso Base di Python 3

22: Come Navigare il File System

Menu della Serie






Ciao a tutti e benvenuti a questa lezione #22, parlaremo oggi di una delle modalità più pratiche per navigare il filesystem del nostro computer con Python, grazie al modulo os e alla funzione os.walk().

Fin'ora abbiamo visto che volendo controllare il contenuto di una cartella, possiamo utilizzare la funzione listdir(), che peró non fa distinzione tra file e sottocartelle, presenti nel percorso passato.

E in quelle situazioni in cui dobbiamo scansionare una parte sostanziosa del sistema, magari alla ricerca di un determinato tipo di file con cui vogliamo operare, potremo combinare listdir() e altre funzioni,
ma il procedimento diventerebbe abbastanza lungo.

Una delle modalità più veloci e pratiche per fare ció è utilizzare invece la funzione walk() del modulo os, capirete bene come funziona a breve.

Questa analizza il percorso passato in maniera ricorsiva, cioè dove ogni analisi viene suggerita da quella precedente, cercando sottocartelle e file.
La funzione os.walk() viene usata in combinazione con i cicli for: ad ogni ciclo, abbiamo 3 elementi:
la cartella in cui ci troviamo al momento, una lista delle sottocartelle presenti, e una lista dei file, al ciclo successivo la funzione entrerà in una delle sottocartelle e ripeterà il processo,
questo prosegue fino a che non si arriva alla fine dell'albero.
Immaginiamo di voler scansionare la cartella in cui ci troviamo, e vogliamo avere un elenco esaustivo di file e sottocartelle e di tutti i file e le altre cartelle presenti al loro interno:

import os
for cartella, sottocartelle, files in os.walk(os.getcwd()):
print(f"Ci troviamo nella cartella: '{cartella}'")
print(f"Le sottocartelle presenti sono: '{sottocartelle}'")
print(f"I files presenti sono: {files}")
print()

Con questi file e sottocartelle potete poi fare tutto quello che volete, ad esempio:
Supponiamo di voler andare alla ricerca di tutti i file .py presenti in questa sezione, e di ottenere quindi in output solamente un elenco di questi file, tralasciando tutti gli altri che verranno incontrati:

for cartella, sottocartelle, files in os.walk(os.getcwd()):
print(f"Ci troviamo nella cartella: '{cartella}'")
print(f"Le sottocartelle presenti sono: '{sottocartelle}'")
for file in files:
if file.endswith(".py"):
print(file)
print()

Io qui ho effettuato un esempio piuttosto semplice, ma capirete di certo che le potenzialità di questa funzione sono altissime!
Arrivati a questo punto della serie vi trovate con tantissimi strumenti a vostra disposizione, vi invito quindi ad esercitarvi cercando di essere creativi!