HOWTO · Python
Ottieni l'estensione del file in Python
Dimostra come ottenere l'estensione del file in Python.
In questa pagina
Per ottenere l’estensione di un nome di file in Python, usa os.path.splitext() per il suffisso finale oppure pathlib.Path.suffixes se ti servono più parti del suffisso, come .tar.bz2. Gli esempi mostrano la struttura dei risultati, così puoi scegliere il formato adatto al tuo codice.
Usa il modulo os.path per estrarre l’estensione di un file in Python
os.path offre funzioni di utilità per lavorare con i percorsi del sistema operativo. La funzione splitext() restituisce una tupla di due elementi: il percorso radice e l’estensione finale. Assegna gli elementi della tupla in quest’ordine, anche se scegli nomi diversi per le variabili.
Esegui questo esempio con un percorso che termina in .docx:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import os
path = "/Users/user/Documents/sampledoc.docx"
root, extension = os.path.splitext(path)
print("Root:", root)
print("Extension:", extension)
Root: /Users/user/Documents/sampledoc
Extension: .docx
L’output mostra prima il percorso radice e poi l’estensione. splitext() considera solo il suffisso finale: per un nome come backup.tar.gz, separa .gz e lascia backup.tar nella radice.
L’estensione restituita da splitext() include il punto iniziale, il che è comodo per confronti come extension == ".csv". Se il nome del file non ha suffisso, la parte dell’estensione è una stringa vuota e la radice resta uguale al nome del file. Un punto iniziale da solo non conta come suffisso: secondo questa regola, un nome come .profile non ha estensione.
Usa il modulo pathlib per estrarre l’estensione di un file in Python
pathlib rappresenta i percorsi tramite oggetti. Crea un oggetto Path a partire da una stringa di percorso, quindi esamina i suoi attributi: parent è il percorso contenitore, name è l’ultimo componente del percorso e suffix è il suffisso finale, compreso il punto iniziale.
Per un file con un solo suffisso, come sampledoc.docx, path.suffix è .docx. Gli attributi sono valori: leggili senza parentesi. Questo esempio autonomo mostra anche la differenza tra suffix e suffixes:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import pathlib
single = pathlib.Path("/Users/user/Documents/sampledoc.docx")
archive = pathlib.Path("/Users/user/Documents/app_sample.tar.bz2")
print("Parent:", single.parent)
print("Filename:", single.name)
print("Final suffix:", single.suffix)
print("Suffix parts:", single.suffixes)
print("Archive suffix:", "".join(archive.suffixes))
Parent: /Users/user/Documents
Filename: sampledoc.docx
Final suffix: .docx
Suffix parts: ['.docx']
Archive suffix: .tar.bz2
L’output mostra il percorso contenitore, il nome finale del file, il suffisso finale, l’elenco dei suffissi e il suffisso dell’archivio ottenuto unendoli. suffixes è un elenco: per sampledoc.docx contiene un elemento, .docx; per app_sample.tar.bz2 contiene .tar e .bz2. Unendo queste parti con una stringa vuota si ottiene .tar.bz2. È utile quando l’applicazione considera un suffisso composto come un’unica unità, ma molti nomi di file hanno un solo suffisso.
Se un percorso non ha suffisso, Path.suffix è una stringa vuota e Path.suffixes è un elenco vuoto. Un punto iniziale da solo, come in .profile, non viene restituito come suffisso. Mantieni l’elenco se il codice successivo deve esaminare ogni parte; unisci le parti solo quando l’applicazione si aspetta un unico valore composto. Questi attributi descrivono l’ultimo componente del nome del percorso, indipendentemente dal fatto che il percorso indichi o meno un file esistente.
Scegli os.path.splitext() quando ti basta il suffisso finale o quando vuoi ottenere anche la radice nella stessa operazione. Scegli Path.suffix per un singolo suffisso con un oggetto percorso, e Path.suffixes quando ti servono le singole parti del suffisso o vuoi unirle in un valore composto. Entrambi gli approcci esaminano il nome; nessuno dei due verifica che il file esista.