Come ottenere tutti i file di una directory

Jinku Hu 30 gennaio 2023
  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
Come ottenere tutti i file di una directory

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.

Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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 Facebook

Articolo correlato - Python File

Articolo correlato - Python Dictionary