Python: Elencare i file in una directory - Guida allo sviluppo moderno

16 settembre 2026

Nel campo dello sviluppo software, un’efficiente gestione del file system è fondamentale per la creazione di applicazioni robuste. Che si tratti di sviluppare una pipeline di elaborazione dati, un sistema di gestione dei contenuti o una soluzione basata sul cloud, la capacità di elencare i file presenti in una directory è un’operazione fondamentale. Python, grazie alla sua semplicità e versatilità, offre potenti strumenti per gestire tali operazioni in modo fluido. In questa guida vedremo come elencare i file presenti in una directory utilizzando Python, approfondendo vari metodi, best practice e applicazioni pratiche. In qualità di leader nella fornitura di soluzioni IT all’avanguardia, Carmatec sfrutta le potenzialità di Python per fornire alle aziende software scalabili ed efficienti. Iniziamo!

Introduzione alle operazioni sul file system in Python

Python è rinomato per la sua facilità d’uso e per la sua ampia libreria standard, che lo rendono il linguaggio di riferimento per gli sviluppatori di ogni settore. Le operazioni sul file system, come l’elenco dei file presenti in una directory, sono fondamentali per attività quali l’acquisizione dei dati, la gestione dei file e l’automazione. Python mette a disposizione diversi moduli per interagire con il file system, tra cui os, pathlib e glob. Ciascun modulo offre vantaggi specifici, adattandosi a diversi casi d’uso e alle preferenze degli sviluppatori.

Noi di Carmatec sappiamo bene quanto sia importante scegliere gli strumenti giusti per ogni lavoro. La nostra esperienza nel campo di Sviluppo in Python ci permette di realizzare soluzioni che ottimizzano le prestazioni, la scalabilità e la manutenibilità. In questo articolo tratteremo:

  • Diversi metodi per elencare i file presenti in una directory
  • Esempi pratici di codice con spiegazioni
  • Gestione degli errori e migliori pratiche
  • Tecniche avanzate per il filtraggio e l'ordinamento dei file
  • Applicazioni concrete rilevanti per la clientela di Carmatec
  • Considerazioni sulle prestazioni per i sistemi su larga scala

Alla fine, avrai acquisito una conoscenza approfondita di come elencare i file in Python e di come queste tecniche possano essere applicate nello sviluppo professionale di software.

Metodo 1: Utilizzo del os Modulo

IL os Il modulo rappresenta l'approccio tradizionale di Python per interagire con il sistema operativo. Fornisce funzioni quali os.listdir(), os.walk(), E os.scandir() per elencare file e cartelle.

Utilizzo os.listdir()

IL os.listdir() La funzione restituisce un elenco di tutte le voci (file e directory) presenti in una directory specificata. Ecco un semplice esempio:

python
import os

# Specificare il percorso della directory
directory = "C:/Users/Documents"

# Elencare tutti gli elementi presenti nella directory
entries = os.listdir(directory)

# Visualizzare gli elementi
for entry in entries:
print(entry)

Uscita (esempio):

document1.txt
photo.jpg
sottocartella

Spiegazione:

  • os.listdir(directory) restituisce un elenco di stringhe che rappresentano i nomi dei file e delle directory.
  • La funzione non distingue tra file e directory, pertanto sono necessari ulteriori controlli se si desidera elencare solo i file.

Per elencare solo i file, puoi combinare os.listdir() con os.path.isfile():

python
import os

directory = "C:/Users/Documents"

# List only files
files = [entry for entry in os.listdir(directory) if os.path.isfile(os.path.join(directory, entry))]

for file in files:
print(file)

Uscita (esempio):

document1.txt
photo.jpg

Punti chiave:

  • Utilizzo os.path.join() per creare percorsi di file indipendenti dalla piattaforma.
  • os.listdir() è semplice ma presenta dei limiti quando si tratta di percorrere file system complessi.
Utilizzo os.scandir()

Introdotto in Python 3.5, os.scandir() è più efficiente di os.listdir() perché restituisce un iteratore di DirEntry oggetti che forniscono metadati quali il tipo e la dimensione dei file senza richiedere ulteriori chiamate di sistema.

python
import os

directory = "C:/Users/Documents"

# Utilizzare scandir per elencare i file
with os.scandir(directory) as entries:
    for entry in entries:
 if entry.is_file():
 print(f"File: {entry.name}, Dimensione: {entry.stat().st_size} byte")

Uscita (esempio):

File: document1.txt, Dimensione: 1024 byte
File: photo.jpg, Dimensione: 52428 byte

Vantaggi:

  • os.scandir() è efficiente in termini di memoria per le directory di grandi dimensioni.
  • DirEntry gli oggetti consentono l'accesso diretto ai metadati dei file (ad esempio, is_file(), stat()).

Metodo 2: Utilizzo del pathlib Modulo

IL pathlib Il modulo, introdotto in Python 3.4, offre un approccio orientato agli oggetti alle operazioni sul file system. È moderno, intuitivo e indipendente dalla piattaforma, il che lo rende la scelta preferita di molti sviluppatori.

Elenco dei file con pathlib

Ecco come elencare i file utilizzando pathlib:

python
from pathlib import Path

# Specificare il percorso della directory
directory = Path("C:/Users/Documents")

# Elenca tutti i file presenti nella directory
files = [entry.name for entry in directory.iterdir() if entry.is_file()]

for file in files:
    print(file)

Uscita (esempio):

document1.txt
photo.jpg

Spiegazione:

  • Percorso (directory) crea un Percorso oggetto che rappresenta la directory.
  • iterdir() rendimenti Percorso oggetti per ciascuna voce della directory.
  • is_file() verifica se la voce è un file.
Elenco ricorsivo con pathlib

Per elencare i file presenti in una directory e nelle sue sottodirectory, utilizzare glob() O rglob():

python
from pathlib import Path

directory = Path("C:/Users/Documents")

# Elenca tutti i file di testo in modo ricorsivo
text_files = directory.rglob("*.txt")

for file in text_files:
    print(file)

Uscita (esempio):

C:\Utenti\Documenti\document1.txt
C:\Utenti\Documenti\sottocartella\notes.txt

Vantaggi:

  • pathlib è più leggibile ed elimina la necessità di os.path.join().
  • Supporta il pattern matching con glob() E rglob().

Metodo 3: Utilizzo del glob Modulo

IL glob Il modulo è progettato per il confronto dei file in base a modelli. È ideale per filtrare i file in base all'estensione o a modelli di nome.

Utilizzo di base di glob
python
import glob

# Elenca tutti i file di testo presenti in una directory
text_files = glob.glob("C:/Users/Documents/*.txt")

for file in text_files:
    print(file)

Uscita (esempio):

C:\Utenti\Documenti\document1.txt

Ricerca ricorsiva con glob

Per effettuare una ricerca ricorsiva, utilizzare ** con recursive=True:

python
import glob

# Elenca tutti i file di testo in modo ricorsivo
text_files = glob.glob("C:/Users/Documents/**/*.txt", recursive=True)

for file in text_files:
    print(file)

Uscita (esempio):

C:\Utenti\Documenti\document1.txt
C:\Utenti\Documenti\sottocartella\notes.txt

Vantaggi:

  • glob è ottimo per filtrare i file in base a modelli (ad esempio, glob è ottimo per filtrare i file in base a modelli (ad esempio, *.txt, *.jpg).
  • È semplice e si integra bene con il resto del codice Python.

Gestione degli errori e migliori pratiche

Durante l'elenco dei file possono verificarsi errori quali la mancanza di directory o problemi relativi ai permessi. Una corretta gestione degli errori garantisce un codice robusto.

Esempio con gestione degli errori
python
from pathlib import Path

def list_files(directory_path):
    try:
 directory = Path(directory_path)
 if not directory.exists():
 print(f"Errore: la directory '{directory_path}' non esiste.")
             return
 if not directory.is_dir():
 print(f"Errore: '{directory_path}' non è una directory.")
 return
 for entry in directory.iterdir():
 if entry.is_file():
                print(f"File: {entry.name}")
    except PermissionError:
 print(f"Errore: autorizzazione negata per '{directory_path}'.")
    except Exception as e:
 print(f"Errore imprevisto: {str(e)}")

# Prova la funzione
list_files("C:/Users/Documents")
list_files("C:/Invalid/Directory")

Uscita (esempio):

File: document1.txt
File: photo.jpg
Errore: la directory ‘C:\Invalid\Directory’ non esiste.

Le migliori pratiche:

  • Convalida dei dati inseriti: Verifica se la directory esiste ed è accessibile.
  • Utilizzare i gestori di contesto: Utilizzo con per os.scandir() per garantire che le risorse vengano rese disponibili.
  • Gestione delle eccezioni: Individua errori specifici come Errore di autorizzazione O FileNotFoundError.
  • Utilizzo pathlib per il codice moderno: È più leggibile e più portatile.
  • Errori di log: Durante la produzione, registrare gli errori in un file o in un sistema di monitoraggio.

Tecniche avanzate

Filtrare i file in base alle dimensioni o alla data di modifica

Per filtrare i file in base ai metadati, utilizzare os O pathlib:

python
from pathlib import Path
from datetime import datetime, timedelta

directory = Path("C:/Users/Documents")
one_week_ago = datetime.now() - timedelta(days=7)

# Elenca i file modificati nell'ultima settimana
recent_files = [
    entry.name for entry in directory.iterdir()
    if entry.is_file() and datetime.fromtimestamp(entry.stat().st_mtime) > one_week_ago
]

for file in recent_files:
    print(file)
Ordinamento dei file

Ordina i file per nome, dimensione o data di modifica:

python
from pathlib import Path

directory = Path("C:/Users/Documents")

# Ordina i file in base alle dimensioni (dal più grande al più piccolo)
files = sorted(
    [entry for entry in directory.iterdir() if entry.is_file()],
    key=lambda x: x.stat().st_size,
    reverse=True
)

for file in files:
    print(f"File: {file.name}, Dimensione: {file.stat().st_size} byte")

Applicazioni pratiche presso Carmatec

Noi di Carmatec sfruttiamo le funzionalità del file system di Python per sviluppare soluzioni destinate a diversi settori. Ecco alcuni esempi:

  • Pipeline di elaborazione dei dati: L'elenco dei file presenti in una directory è fondamentale per l'acquisizione di set di dati nei progetti di machine learning o di analisi dei dati. In Python, glob Il modulo consente di filtrare i file pertinenti (ad esempio, CSV o JSON).
  • Sistemi di gestione dei contenuti: Le nostre soluzioni CMS utilizzano l'elenco dei file per gestire le risorse multimediali, garantendo un recupero e un'organizzazione efficienti.
  • Script di automazione: Sviluppiamo script per monitorare le directory alla ricerca di nuovi file, attivando flussi di lavoro quali backup o notifiche.
  • Integrazione cloud: Nelle applicazioni basate sul cloud, elenchiamo i file presenti nei bucket di archiviazione (ad esempio, AWS S3) utilizzando gli SDK di Python, adattando la logica di elenco delle directory ai sistemi distribuiti.

Grazie alla combinazione degli strumenti di gestione dei file di Python con la nostra esperienza nel cloud, nell’intelligenza artificiale e nello sviluppo web, Carmatec offre soluzioni in grado di generare valore aggiunto per le aziende.

Considerazioni sulle prestazioni

Quando si elencano i file presenti in directory di grandi dimensioni (ad esempio, con migliaia di file), le prestazioni sono fondamentali. Ecco come ottimizzarle:

  • Utilizzo os.scandir(): È più veloce di os.listdir() per le directory di grandi dimensioni.
  • Evitare i metadati superflui: Recupera solo gli attributi dei file necessari (ad esempio, il nome) per ridurre il numero di chiamate di sistema.
  • Utilizza i generatori: Metodi come pathlib.iterdir() E os.scandir() genera le voci in modo differito, risparmiando memoria.
  • Parallelizzazione per directory di grandi dimensioni: Per le directory di grandi dimensioni, utilizzare multiprocessing per parallelizzare l'elenco dei file (prestando attenzione a evitare colli di bottiglia nell'I/O).

Esempio di elenco di file in parallelo:

python
from pathlib import Path
from multiprocessing import Pool

def process_file(entry):
    if entry.is_file():
        return entry.name
    return None

directory = Path("C:/Users/Documents")
files = directory.iterdir()

with Pool() as pool:
    file_names = [name for name in pool.map(process_file, files) if name]

for file in file_names:
    print(file)

Conclusione

Elencare i file presenti in una directory è un’operazione apparentemente semplice che sta alla base di molte applicazioni complesse. In Python, os, pathlib, E glob I moduli offrono strumenti flessibili e potenti per gestire questa attività in modo efficiente. Seguendo le migliori pratiche, come la gestione degli errori, e utilizzando API moderne come pathlib, e ottimizzando le prestazioni, gli sviluppatori possono realizzare operazioni sul file system affidabili.

A Carmatec, sfruttiamo le potenzialità di Python per offrire soluzioni innovative soluzioni software su misura per le esigenze dei nostri clienti. Che si tratti di automatizzare l’elaborazione dei file, creare pipeline di dati o sviluppare applicazioni cloud-native, la nostra esperienza garantisce risultati di alta qualità e scalabili. Se state pensando di utilizzare Python per il vostro prossimo progetto, contattare Carmatec Contattaci oggi stesso per scoprire come possiamo trasformare la tua visione in realtà.