Video Corso Base di Python 3

22: Come Navigare il File System

Ciao a tutti e benvenuti a questa lezione numero 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!


Menu della Serie