HOWTO · Python

Ottieni nome file dal percorso in Python

Questo tutorial mostrerà diversi metodi in Python per estrarre il nome del file da un percorso di file, inclusi os.path.split(), os.path.basename(), ntpath.basename() e pathlib.Path.name.

In questa pagina

In programmazione, spesso abbiamo bisogno di estrarre il nome del file da un determinato percorso di file. Consideriamo uno scenario in cui abbiamo un percorso di file, come C:\Documents\Project\file.txt, e dobbiamo estrarre solo il nome del file, ovvero file.txt. È un’operazione di routine nella gestione dei file, nell’analisi dei dati e nello sviluppo web, e Python offre diversi modi per farlo.

Questo tutorial introduce quattro metodi per ottenere un nome di file da un percorso in Python: os.path.split(), os.path.basename(), ntpath.basename() e pathlib.Path.name. Si differenziano principalmente per ciò che offrono oltre al nome del file e per il modo in cui trattano i percorsi scritti per un sistema operativo diverso da quello su cui gira il tuo codice.

Usa la funzione os.path.split() per ottenere il nome del file dal percorso in Python

La funzione os.path.split() divide un percorso di file nelle sue componenti di directory e nome del file, in modo da poter recuperare solo la parte del nome del file — o conservare entrambe le parti, se ti serve anche la directory.

Sintassi:

import os

directory, filename = os.path.split(path)

Parametri: La funzione os.path.split() accetta un singolo parametro.

  • path: Questo parametro rappresenta il percorso di file da cui vogliamo estrarre il nome del file. Può essere una stringa contenente il percorso assoluto o relativo del file.

Valori restituiti: La funzione restituisce una tupla contenente due elementi.

  • directory: Questa variabile contiene la componente di directory del percorso, escluso il nome del file.

  • filename: Questa variabile contiene il nome del file estratto dal percorso.

Il seguente frammento di codice dimostra come possiamo ottenere un nome di file da un percorso in Python utilizzando la funzione os.path.split().

import os

directory, filename = os.path.split("MyFolder/MySubFolder/MyFile.txt")
print(directory)
print(filename)

Produzione:

MyFolder/MySubFolder
MyFile.txt

La variabile directory contiene MyFolder/MySubFolder, la componente di directory del percorso di file, e la variabile filename memorizza MyFile.txt, il nome del file estratto. Usa questo metodo quando ti servono entrambe le parti; se ti serve solo il nome del file, il metodo successivo è più breve.

Usa la funzione os.path.basename() per ottenere il nome del file dal percorso in Python

La funzione os.path.basename() restituisce l’ultima componente di un percorso, che in genere è il nome del file. Fa parte del modulo os.path, le cui regole per i separatori seguono il sistema operativo su cui gira il codice.

Sintassi:

import os

filename = os.path.basename(path)

Parametri: La funzione os.path.basename() accetta un singolo parametro.

  • path: Questo parametro rappresenta il percorso di file da cui vogliamo estrarre il nome del file. Può essere una stringa contenente il percorso assoluto o relativo del file.

Valore restituito: La funzione restituisce una stringa che rappresenta il nome del file estratto dal percorso dato.

Sebbene sia os.path.basename() sia os.path.split() possano estrarre nomi di file dai percorsi, os.path.basename() si concentra esclusivamente sulla componente del nome del file e la restituisce come stringa, il che la rende la scelta più semplice quando non ti serve la parte di directory.

import os

filename = os.path.basename("MyFolder/MySubFolder/MyFile.txt")
print(filename)

Produzione:

MyFile.txt

Il risultato, il nome del file MyFile.txt, viene assegnato alla variabile filename e stampato.

Usa la libreria ntpath per ottenere il nome del file dal percorso in Python

Il modulo ntpath di Python implementa la manipolazione dei percorsi per i percorsi Windows, qualunque sia il sistema su cui gira effettivamente il tuo codice. Questo è importante quando devi elaborare percorsi in stile Windows su una macchina Linux o macOS: lì, os.path.basename() non tratta il backslash come separatore, quindi os.path.basename("MyFolder\\MySubFolder\\MyFile.txt") restituisce l’intera stringa, mentre ntpath.basename() restituisce il nome del file.

Sintassi:

import ntpath

filename = ntpath.basename(path)

Parametri: La funzione ntpath.basename() accetta un singolo parametro.

  • path: Questo parametro rappresenta il percorso di file da cui vogliamo estrarre il nome del file. Può essere una stringa contenente il percorso assoluto o relativo del file.

Valore restituito: La funzione restituisce una stringa che rappresenta il nome del file estratto dal percorso dato.

Il seguente frammento di codice dimostra come possiamo ottenere un nome di file da un percorso Windows in Python utilizzando la funzione ntpath.basename().

import ntpath

filename = ntpath.basename("MyFolder\\MySubFolder\\MyFile.txt")
print(filename)

Produzione:

MyFile.txt

Usa ntpath quando i percorsi che elabori sono percorsi Windows ma il tuo codice può girare ovunque; su una macchina Windows, os.path segue già le stesse regole, quindi i due si comportano allo stesso modo.

Usa il modulo pathlib per ottenere il nome del file dal percorso in Python

Il modulo pathlib fornisce un approccio orientato agli oggetti per lavorare con i percorsi dei file. La sua classe Path incapsula le operazioni relative ai percorsi, e il nome del file è disponibile direttamente come attributo .name di un oggetto Path.

from pathlib import Path

filename = Path("MyFolder/MySubFolder/MyFile.txt").name
print(filename)

Produzione:

MyFile.txt

Oltre a .name, lo stesso oggetto ti dà la directory padre (.parent), l’estensione (.suffix) e il nome del file senza estensione (.stem), il che rende pathlib la scelta comoda quando ti serve più del solo nome del file.

Conclusione

Abbiamo esplorato 4 diversi metodi in Python per estrarre il nome del file da un percorso di file: os.path.split(), os.path.basename(), ntpath.basename() e pathlib.Path.name. Ogni metodo ha vantaggi e svantaggi, che li rendono adatti a scenari diversi.

Il metodo os.path.split() può dividere un percorso nelle sue componenti di directory e nome del file. Questa granularità consente un maggiore controllo sul percorso, ma richiede codice aggiuntivo per accedere solo al nome del file. Tuttavia, funziona su diversi sistemi operativi, il che lo rende versatile.

D’altra parte, os.path.basename() offre un approccio più semplice estraendo direttamente il nome del file dal percorso. È compatibile con varie piattaforme e offre una soluzione semplice. Tuttavia, restituisce solo il nome del file come stringa.

Per i percorsi specifici di Windows, ntpath.basename() è progettato per gestire questi percorsi su qualsiasi sistema operativo. Estrae direttamente il nome del file senza bisogno di codice aggiuntivo. Tuttavia, è limitato ai percorsi Windows e manca di compatibilità multipiattaforma.

Infine, pathlib.Path.name fornisce un approccio orientato agli oggetti per lavorare con i percorsi. Consente ulteriori manipolazioni dei percorsi e si integra bene con altre funzionalità di pathlib. Tuttavia, introduce una certa complessità per la semplice estrazione del nome del file e richiede l’importazione del modulo pathlib.