Come ottenere tutti i file di una directory
-
os.listdir
per ottenere tutti i file in una directory in Python -
os.walk
per ottenere tutti i file in una directory in Python -
glob.glob
per ottenere tutti i file in una directory in Python
Si potrebbero avere almeno 3 metodi per elencare tutti i file di una directory in Python, usando le funzioni Python os.listdir
, os.walk
e glob.glob
.
Di seguito è riportata la presunzione di questo tutorial,
- Versione Python - Python 3
- Il nome del percorso è
dirPath
ed esiste nel sistema, quindi non avremo bisogno di controllare l’esistenza della directory.
os.listdir
per ottenere tutti i file in una directory in Python
os.listdir
elenca tutti i file e le cartelle della directory, quindi ha bisogno di codice extra per filtrare i file dal risultato.
import os
dirPath = r"C:\git\DelftStack\content"
result = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f))]
print(result)
os.listdir
restituisce solo il percorso relativo dei file o delle cartelle con riferimento a dirPath
, e la funzione os.path.isfile
ha bisogno del percorso completo per verificare se si tratta di un file o meno, quindi dobbiamo usare os.path.join
per combinare il dirPath
e i risultati di os.listdir
per ottenere il percorso completo dei file o dei percorsi.
os.walk
per ottenere tutti i file in una directory in Python
os.walk
generates the file names in the given directory by traversing the tree top-down (per default) or bottom-up. It yields a 3-tuple (dirpath
, dirname
, filenames
) each time it walks to the directory in the tree (including top itself).
Tutti i file sono inclusi nella tupla per la prima resa di os.walk
, quindi è un modo Pythonic
import os
dirPath = r"C:\git\DelftStack\content"
result = next(os.walk(dirPath))[2]
print(result)
glob.glob
per ottenere tutti i file in una directory in Python
Il modulo glob
trova tutti i nomi dei percorsi che corrispondono al modello specifico dato secondo le regole utilizzate nella shell Unix. glob.glob
restituisce la lista dei nomi dei percorsi che corrispondono allo schema del nome del percorso dato. Il percorso del file ha lo schema di *.*
, che è quello che sarà passato a glob.glob
come argomento di input.
import glob
dirPathPattern = r"C:\git\DelftStack\content\*.*"
result = glog.glob(dirPathPattern)
print(result)
glob.glob
restituisce il percorso completo dei file abbinati, come C:\git\DelftStack\content\about.rst
.
Il risultato del metodo glob.glob
come mostrato qui non può garantire che siano solo file, perché controlla solo se il nome del percorso corrisponde allo schema, ma non controlla che sia un file o una directory.
Per esempio, se una directory ha lo schema dei nomi come test.test
, allora anche questa directory è inclusa nel risultato.
Se è necessario assicurarsi che l’output contenga solo file, è necessario verificarlo con la funzione os.path.isfile
.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArticolo correlato - Python File
- Come aggiungere testo ad un file in Python
- Come controllare se un file esiste in Python
- Come trovare file con una certa estensione solo in Python
- Leggi linee specifiche da un file in Python
- Apri un file zip senza estrarlo in Python