Elimina una directory o un file usando Python
In questo articolo tratteremo come eliminare (rimuovere) file e directory in Python. Python fornisce diversi metodi e funzioni per rimuovere file e directory. È possibile rimuovere il file in base alle proprie necessità.
Vari metodi forniti da Python sono:
- Utilizzando os.remove()
- Utilizzando os.rmdir()
- Utilizzando shutil.rmtree()
- Utilizzando pathlib.Path(empty_dir_path).rmdir()
Eliminazione di file/dir utilizzando il metodo os.remove()
Modulo del sistema operativo in Python fornisce funzioni per interagire con il sistema operativo. Tutte le funzioni nel modulo del sistema operativo aumentano OSError in caso di nomi e percorsi di file non validi o inaccessibili o altri argomenti che hanno il tipo corretto ma non sono accettati dal sistema operativo.
os.remove() in Python viene utilizzato per rimuovere o eliminare un percorso di file. Questo metodo non è possibile rimuovere o eliminare una directory . Se il percorso specificato è una directory, il metodo genererà un'eccezione OSError.
Sintassi di os.remove()
Sintassi: os.remove(percorso, *, dir_fd = Nessuno)
Parametro: sentiero: Un oggetto simile a un percorso che rappresenta il percorso di un file. Un oggetto simile a un percorso è un oggetto stringa o byte che rappresenta un percorso.
dir_fd (opzionale): un descrittore di file che fa riferimento a una directory. Il valore predefinito di questo parametro è Nessuno. Se il percorso specificato è assoluto, dir_fd viene ignorato.
Nota: Il '*' nell'elenco dei parametri indica che tutti i parametri successivi (qui nel nostro caso 'dir_fd') sono parametri solo con parole chiave e possono essere forniti utilizzando il loro nome, non come parametro posizionale.
Tipo di reso: Questo metodo non restituisce alcun valore.
Esempio 1: eliminare un file in Python
Supponiamo che i file contenuti nella cartella siano:
Vogliamo eliminare il file1 dalla cartella sopra. Di seguito è riportata l'implementazione.
Python3
# Python program to explain os.remove() method> # importing os module> import> os> # File name> file> => 'file1.txt'> # File location> location> => 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil/'> # Path> path> => os.path.join(location,> file> )> # Remove the file> # 'file.txt'> os.remove(path)> |
Produzione:
Esempio 2: rimuovere il file con percorso assoluto
Se il percorso specificato è una directory.
Python3
# Python program to explain os.remove() method> # importing os module> import> os> # Directory name> dir> => 'Nikhil'> # Path> location> => 'D:/Pycharm projects/techcodeview.com/Authors/'> path> => os.path.join(location,> dir> )> # Remove the specified> # file path> os.remove(path)> print> (> '% s has been removed successfully'> %> dir> )> # if the specified path> # is a directory then> # 'IsADirectoryError' error> # will raised> # Similarly if the specified> # file path does not exists or> # is invalid then corresponding> # OSError will be raised> |
Produzione:
Traceback (most recent call last): File 'osremove.py', line 11, in os.remove(path) IsADirectoryError: [Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil'
Esempio 3: Controlla se il file esiste prima di eliminarlo
Errore di gestione durante l'utilizzo del metodo os.remove().
Python3
# Python program to explain os.remove() method> # importing os module> import> os> # path> path> => 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil'> # Remove the specified> # file path> try> :> > os.remove(path)> > print> (> '% s removed successfully'> %> path)> except> OSError as error:> > print> (error)> > print> (> 'File path can not be removed'> )> |
Produzione:
[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed
Nota: Per saperne di più su os.remove() clicca qui.
Eliminazione di file/dir utilizzando il metodo os.rmdir()
Il metodo os.rmdir() in Python viene utilizzato per rimuovere o eliminare una directory vuota. OSError verrà generato se il percorso specificato non è una directory vuota.
Sintassi di os.rmdir()
Sintassi: os.rmdir(percorso, *, dir_fd = Nessuno)
Parametro:
percorso: un oggetto simile a un percorso che rappresenta il percorso di un file. Un oggetto simile a un percorso è un oggetto stringa o byte che rappresenta un percorso. dir_fd (opzionale): un descrittore di file che fa riferimento a una directory. Il valore predefinito di questo parametro è Nessuno. Se il percorso specificato è assoluto, dir_fd viene ignorato.
Nota: Il '*' nell'elenco dei parametri indica che tutti i parametri successivi (qui nel nostro caso 'dir_fd') sono parametri solo con parole chiave e possono essere forniti utilizzando il loro nome, non come parametro posizionale.
Tipo di reso: Questo metodo non restituisce alcun valore.
Esempio 1: Elimina tutte le directory da una directory
Supponiamo che le directory siano:
Vogliamo rimuovere la directory Geeks. Di seguito è riportata l'implementazione.
Python3
# importing os module> import> os> # Directory name> directory> => 'Geeks'> # Parent Directory> parent> => 'D:/Pycharm projects/'> # Path> path> => os.path.join(parent, directory)> # Remove the Directory> # 'Geeks'> os.rmdir(path)> |
Produzione:
Esempio 2: gestione degli errori durante l'eliminazione di una directory
Gestione degli errori durante l'utilizzo del metodo os.rmdir(),
Python3
# Python program to explain os.rmdir() method> # importing os module> import> os> # Directory name> directory> => 'techcodeview.com'> # Parent Directory> parent> => 'D:/Pycharm projects/'> # Path> path> => os.path.join(parent, directory)> # Remove the Directory> # 'techcodeview.com'> try> :> > os.rmdir(path)> > print> (> 'Directory '% s' has been removed successfully'> %> directory)> except> OSError as error:> > print> (error)> > print> (> 'Directory '% s' can not be removed'> %> directory)> # if the specified path> # is not an empty directory> # then permission error will> # be raised> # similarly if specified path> # is invalid or is not a> # directory then corresponding> # OSError will be raised> |
Produzione:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed
Nota: Per saperne di più su os.rmdir() clicca qui.
Eliminazione di file/dir utilizzando shutil.rmtree()
shutil.rmtree() viene utilizzato per eliminare un intero albero di directory, un percorso deve puntare a una directory (ma non un collegamento simbolico a una directory).
Sintassi di shutil.rmtree()
Sintassi: shutil.rmtree(percorso, ignore_errors=False, onerror=Nessuno)
parametri:
percorso: un oggetto simile a un percorso che rappresenta il percorso di un file. Un oggetto simile a un percorso è un oggetto stringa o byte che rappresenta un percorso. ignore_errors: se ignore_errors è vero, gli errori risultanti da rimozioni non riuscite verranno ignorati. onerror: se ignore_errors è false o omesso, tali errori vengono gestiti chiamando un gestore specificato da onerror.
Elimina una directory e i file in essa contenuti.
Esempio 1:
Supponiamo che la directory e le sottodirectory siano le seguenti.
# Directory principale:
# Directory all'interno della directory principale:
# File all'interno della sottodirectory:
Esempio: eliminare tutti i file da una directory
Vogliamo rimuovere la directory Authors. Di seguito è riportata l'implementazione.
Python3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path)> |
Produzione:
Esempio 2: ignorare l'errore durante l'eliminazione di una directory
Passando ignore_errors = True.
Python3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path, ignore_errors> => False> )> # making ignore_errors = True will not raise> # a FileNotFoundError> |
Produzione:
Traceback (ultima chiamata più recente): File D:/Pycharm project/gfg/gfg.py, riga 16, in shutil.rmtree(percorso, ignore_errors=False) File C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, riga 730, in rmtree restituisce _rmtree_unsafe(percorso, errore) File C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , riga 589, in _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) File C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, riga 586, in _rmtree_unsafe con os.scandir(path) come scandir_it: FileNotFoundError: [WinError 3] Il sistema non riesce a trovare il percorso specificato: 'D:/Pycharm progetti/techcodeview.com/Authors'
Esempio 3: gestore delle eccezioni
In caso di errore dovrebbe essere passata una funzione che deve contenere tre parametri.
- funzione – funzione che ha sollevato l'eccezione. path – nome del percorso passato che ha sollevato l'eccezione durante la rimozione excinfo – informazioni sull'eccezione sollevate da sys.exc_info()
Di seguito è riportata l'implementazione
Python3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # exception handler> def> handler(func, path, exc_info):> > print> (> 'Inside handler'> )> > print> (exc_info)> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path, onerror> => handler)> |
Produzione:
Gestore interno (, FileNotFoundError(2, 'Il sistema non riesce a trovare il percorso specificato'), ) Gestore interno (, FileNotFoundError(2, 'Il sistema non riesce a trovare il file specificato'), )
Eliminazione di file/dir utilizzando pathlib.Path(empty_dir_path).rmdir()
Una directory vuota può anche essere rimossa o cancellata utilizzando il metodo rmdir() del modulo pathlib. Per prima cosa dobbiamo impostare il percorso per la directory, quindi chiamiamo il metodo rmdir() su quel percorso
Sintassi di pathlib.Path
Sintassi: pathlib.Path(empty_dir_path).rmdir()
Parametro:
empty_dir_path: un oggetto simile a un percorso che rappresenta un percorso di directory vuoto. Un oggetto simile a un percorso è un oggetto stringa o byte che rappresenta un percorso.
Tipo di reso: Questo metodo non restituisce alcun valore.
Esempio: eliminare una directory vuota utilizzando rmdir()
In questo esempio, elimineremo una cartella vuota, dobbiamo solo specificare il nome della cartella se si trova nella directory principale
Python3
import> pathlib> # Deleting an empty folder> # Put your file address> empty_dir> => r> 'Untitled Folder'> path> => pathlib.Path(empty_dir).rmdir()> print> (> 'Deleted '%s' successfully'> %> empty_dir)> |
Produzione:
Deleted 'Untitled Folder' successfully