AD

Ottenere la lista di file di una cartella in Python

Ottenere la lista di file presenti in una cartella è una delle operazioni più comuni e necessarie in molti progetti di programmazione. Python offre vari metodi per esplorare le directory e ottenere informazioni sui file contenuti.

In questa pagina, esploreremo diversi modi per ottenere la lista di file di una cartella utilizzando Python, con esempi pratici e consigli utili per ottimizzare il tuo codice.

Python fornisce diversi moduli che permettono di lavorare con il file system, tra cui os, os.path e glob. Ognuno di questi moduli ha le proprie caratteristiche e vantaggi. Di seguito, vedremo come utilizzare questi strumenti per ottenere la lista di file di una cartella.

Utilizzo del modulo os in Python

Il modulo os è uno dei moduli più utilizzati per interagire con il sistema operativo in Python. La funzione os.listdir() è particolarmente utile per ottenere la lista di file e cartelle presenti in una directory.

import os

def lista_file(cartella): return os.listdir(cartella) cartella = 'percorso/della/cartella' file_list = lista_file(cartella) print(file_list)

In questo esempio, os.listdir(cartella) restituisce una lista contenente i nomi di tutti i file e le cartelle presenti nella directory specificata.

Filtrare solo i file da una cartella

Spesso, potresti voler ottenere solo i file, escludendo le cartelle. Puoi fare ciò utilizzando os.path.isfile()

import os def lista_file(cartella): return [f for f in os.listdir(cartella) if os.path.isfile(os.path.join(cartella, f))] cartella = 'percorso/della/cartella' file_list = lista_file(cartella) print(file_list)

In questo esempio, filtriamo la lista usando una list comprehension che include solo i file.

Utilizzo del modulo glob in Python

Il modulo glob permette di usare pattern matching simili a quelli della shell per trovare file e directory. È particolarmente utile quando si desidera ottenere file con specifiche estensioni o nomi che corrispondono a un certo pattern.

import os import glob def lista_file(cartella, estensione='*'): return glob.glob(os.path.join(cartella, estensione)) cartella = 'percorso/della/cartella' file_list = lista_file(cartella, '*.txt') print(file_list)

In questo esempio, glob.glob() restituisce una lista di file che corrispondono al pattern *.txt nella directory specificata.

Utilizzo del modulo os.scandir in Python

Il modulo os.scandir offre un modo efficiente per ottenere la lista di file e directory, fornendo più informazioni su ciascun elemento.

import os def lista_file(cartella): with os.scandir(cartella) as entries: return [entry.name for entry in entries if entry.is_file()] cartella = 'percorso/della/cartella' file_list = lista_file(cartella) print(file_list)

In questo esempio, os.scandir() viene utilizzato all'interno di un contesto with, che assicura la chiusura corretta dell'iteratore.

Utilizzo del modulo pathlib in Python

Il modulo pathlib, introdotto in Python 3.4, fornisce un'interfaccia orientata agli oggetti per lavorare con il file system.

from pathlib import Path def lista_file(cartella): return [f.name for f in Path(cartella).iterdir() if f.is_file()] cartella = 'percorso/della/cartella' file_list = lista_file(cartella) print(file_list)

In questo esempio, Path(cartella).iterdir() restituisce un iteratore sugli oggetti Path presenti nella directory specificata, e f.is_file() viene usato per filtrare solo i file.

Conclusione

Ottenere la lista di file di una cartella in Python è un'operazione semplice e versatile, grazie ai vari moduli disponibili. Che tu stia usando os, glob, os.scandir() o pathlib, ogni metodo offre vantaggi unici.