Quando si lavora con i file in Python, potrebbe essere necessario recuperare file basati su uno specifico pattern. Il modulo glob in Python fornisce funzioni per creare liste di file che corrispondono a determinati pattern, come caratteri jolly e supporto per la ricerca ricorsiva con "". Ecco come possiamo importare il modulo e usarlo:
import glob
txt_files = glob.glob('*.txt') # Recupera tutti i file .txt nella directory corrente
print(txt_files, type(txt_files)) # Stampa la lista dei file .txt e il loro tipo
Supponiamo che nella directory corrente ci siano tre file di testo: file1.txt, file2.txt e file3.txt, l'output sarebbe:
La funzione glob prende un pattern come stringa e restituisce una lista di percorsi di file e directory che corrispondono al pattern.
Nel nostro esempio precedente, abbiamo usato il carattere jolly * che corrisponde a zero o più caratteri. Quindi, *.txt corrisponde a tutti i file che terminano con .txt.
Possiamo anche cercare file nelle sottodirectory in modo ricorsivo:
nested_files = glob.glob('**/*.txt', recursive=True) # Recupera tutti i file .txt ricorsivamente
print(nested_files, type(nested_files)) # Stampa la lista dei file .txt e il loro tipo
Supponendo che, oltre ai nostri file precedenti, abbiamo anche una cartella folder1 nella directory corrente contenente file4.txt e file5.txt, l'output sarebbe:
Qui abbiamo usato ** nel nostro pattern. Questo simbolo in un pattern di percorso rappresenta tutti i file e zero o più directory e sottodirectory. Abbiamo anche utilizzato l'argomento recursive=True per permettere alla funzione di cercare nelle sottodirectory. Pertanto, '**/*.txt', recursive=True recupera tutti i file .txt dalla directory corrente e dalle sue sottodirectory.
Questo è un modo utile per gestire i percorsi dei file e automatizzare le operazioni sui file in Python.
Sfida: Trova i file .py
Come nuovo data scientist in una startup tecnologica, ti viene affidato il compito di organizzare tutti i file Python nel tuo progetto corrente. A causa della fretta delle ultime settimane, i file Python (.py) sono sparsi in tutta la directory corrente. Il tuo lavoro è creare un programma Python che utilizzi glob per elencare tutti i file Python (.py) presenti nella directory corrente. Tuttavia, poiché sei interessato solo ai nomi dei file e non alla loro posizione, l'output deve contenere solo i nomi dei file senza il percorso della directory.
Il programma non deve ricevere alcun input.
L'output del programma deve contenere i nomi dei file Python nella directory corrente, ciascun nome su una nuova riga. Non includere il percorso della directory nell'output. L'output deve essere ordinato alfabeticamente.