Come ottenere tutti i file di una directory
-
os.listdirper ottenere tutti i file in una directory in Python -
os.walkper ottenere tutti i file in una directory in Python -
glob.globper 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 è
dirPathed 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
- Come scrivere riga per riga in un file utilizzando Python
