Come ottenere tutti i file di una directory

  1. os.listdir per ottenere tutti i file in una directory in Python
  2. os.walk per ottenere tutti i file in una directory in Python
  3. 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,

  1. Versione Python - Python 3
  2. 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.

Attenzione

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.

Articolo correlato - Python File

  • Scrivi la stringa in un file in Python
  • Ottieni l'estensione del file in Python
  • Articolo correlato - Python Dictionary

  • Come fondere due dizionari in Python 2 e 3
  • Svuota un dizionario in Python