En aquest article, explicarem com esborrar (eliminar) fitxers i directoris a Python. Python ofereix diferents mètodes i funcions per eliminar fitxers i directoris. Un pot eliminar el fitxer segons la seva necessitat.
Diversos mètodes proporcionats per Python són:
- Utilitzant os.remove()
- Utilitzant os.rmdir()
- Utilitzant shutil.rmtree()
- Utilitzant pathlib.Path(empty_dir_path).rmdir()
Esborrant fitxer/dir mitjançant el mètode os.remove().
Mòdul SO a Python proporciona funcions per interactuar amb el sistema operatiu. Totes les funcions del mòdul os augmenten OSError en el cas de noms i camins de fitxer no vàlids o inaccessibles, o altres arguments que tinguin el tipus correcte però que no siguin acceptats pel sistema operatiu.
mètode os.remove() a Python s'utilitza per eliminar o eliminar una ruta d'arxiu. Aquest mètode no es pot eliminar ni esborrar un directori . Si el camí especificat és un directori, el mètode generarà OSError.
Sintaxi de os.remove()
Sintaxi: os.remove(camí, *, dir_fd = Cap)
Paràmetre: Camí: Un objecte semblant a un camí que representa una ruta de fitxer. Un objecte semblant a un camí és un objecte de cadena o bytes que representa un camí.
dir_fd (opcional): un descriptor de fitxer que fa referència a un directori. El valor per defecte d'aquest paràmetre és Cap. Si el camí especificat és absolut, dir_fd s'ignora.
Nota: El '*' a la llista de paràmetres indica que tots els paràmetres següents (en el nostre cas, 'dir_fd') són paràmetres només de paraules clau i es poden proporcionar amb el seu nom, no com a paràmetre posicional.
Tipus de retorn: Aquest mètode no retorna cap valor.
Exemple 1: suprimiu un fitxer a Python
Suposem que el fitxer contingut a la carpeta és:

Volem eliminar el fitxer 1 de la carpeta anterior. A continuació es mostra la implementació.
Python 3
# 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)> |
>
>
Sortida:

Exemple 2: elimina el fitxer amb el camí absolut
Si el camí especificat és un directori.
Python 3
# 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> |
>
>
Sortida:
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'>
Exemple 3: Comproveu si el fitxer existeix abans de suprimir-lo
S'ha gestionat l'error mentre s'utilitza el mètode os.remove().
Python 3
# 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'> )> |
>
>
Sortida:
[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed>
Nota: Per saber més sobre os.remove() feu clic aquí.
Esborrant fitxer/dir mitjançant el mètode os.rmdir().
El mètode os.rmdir() a Python s'utilitza per eliminar o eliminar un directori buit. OSError es generarà si el camí especificat no és un directori buit.
Sintaxi de os.rmdir()
Sintaxi: os.rmdir(camí, *, dir_fd = Cap)
Paràmetre:
ruta: un objecte semblant a un camí que representa una ruta d'arxiu. Un objecte semblant a un camí és un objecte de cadena o bytes que representa un camí. dir_fd (opcional): un descriptor de fitxer que fa referència a un directori. El valor per defecte d'aquest paràmetre és Cap. Si el camí especificat és absolut, dir_fd s'ignora.
Nota: El '*' a la llista de paràmetres indica que tots els paràmetres següents (en el nostre cas, 'dir_fd') són paràmetres només de paraules clau i es poden proporcionar amb el seu nom, no com a paràmetre posicional.
Tipus de retorn: Aquest mètode no retorna cap valor.
Exemple 1: Suprimeix tots els directoris d'un directori
Suposem que els directoris són:

Volem eliminar el directori Geeks. A continuació es mostra la implementació.
Python 3
# 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)> |
>
>
Sortida:

Exemple 2: Gestió d'errors en suprimir un directori
Gestió d'errors mentre s'utilitza el mètode os.rmdir(),
Python 3
# 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> |
>
>
Sortida:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed>
Nota: Per saber més sobre os.rmdir() feu clic aquí.
Esborrant fitxer/dir mitjançant shutil.rmtree()
shutil.rmtree() s'utilitza per eliminar un arbre de directoris sencer, un camí ha d'apuntar a un directori (però no un enllaç simbòlic a un directori).
Sintaxi de shutil.rmtree()
Sintaxi: shutil.rmtree (camí, ignore_errors = Fals, onerror = Cap)
Paràmetres:
ruta: un objecte semblant a un camí que representa una ruta d'arxiu. Un objecte semblant a un camí és un objecte de cadena o bytes que representa un camí. ignore_errors: si ignore_errors és cert, s'ignoraran els errors derivats de l'eliminació fallida. onerror: si ignore_errors és fals o s'omet, aquests errors es gestionen cridant a un controlador especificat per onerror.
Eliminar un directori i els fitxers que hi conté.
Exemple 1:
Suposem que el directori i els subdirectoris són els següents.
# Directori pare:

# Directori dins del directori principal:

# Fitxer dins del subdirectori:

Exemple: suprimiu tots els fitxers d'un directori
Volem eliminar el directori Autors. A continuació es mostra la implementació.
Python 3
python rstrip
# 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)> |
>
>
Sortida:

Exemple 2: Ignoreu l'error en suprimir un directori
En passar ignore_errors = True.
Python 3
# 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> |
>
>
Sortida:
Traceback (última trucada més recent): fitxer D:/Pycharm projects/gfg/gfg.py, línia 16, a shutil.rmtree(path, ignore_errors=False) Fitxer C:UsuarisNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, línia 730, a rmtree retorna _rmtree_unsafe(path, onerror) Fitxer C:UsuarisNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , línia 589, a _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) Fitxer C:UsuarisNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, línia 586, a _rmtree_unsafe amb os.scandir(camí) com a scandir_it: FileNotFoundError: [WinError 3] El sistema no pot trobar el camí especificat: 'D:/Pycharm projects/techcodeview.com/Authors'
Exemple 3: gestor d'excepcions
En cas d'error, s'ha de passar una funció que ha de contenir tres paràmetres.
- funció: funció que va generar l'excepció. camí: el nom del camí passat que va generar l'excepció mentre s'eliminava excinfo: informació de l'excepció generada per sys.exc_info()
A continuació es mostra la implementació
Python 3
# 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)> |
>
>
Sortida:
Inside handler (, FileNotFoundError(2, 'El sistema no pot trobar el camí especificat'), ) Inside handler (, FileNotFoundError(2, 'El sistema no pot trobar el fitxer especificat'), )
Esborrant fitxer/dir mitjançant el pathlib.Path(empty_dir_path).rmdir()
Un directori buit també es pot eliminar o esborrar mitjançant el mètode rmdir() del mòdul pathlib. En primer lloc, hem d'establir el camí del directori i després cridem al mètode rmdir() en aquest camí
Sintaxi de pathlib.Path
Sintaxi: pathlib.Path(empty_dir_path).rmdir()
Paràmetre:
empty_dir_path: Un objecte semblant a un camí que representa un camí de directori buit. Un objecte semblant a un camí és un objecte de cadena o bytes que representa un camí.
Tipus de retorn: Aquest mètode no retorna cap valor.
Exemple: suprimiu un directori buit amb rmdir()
En aquest exemple, esborrarem una carpeta buida, només hem d'especificar el nom de la carpeta si es troba al directori arrel
Python 3
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)> |
>
>
Sortida:
Deleted 'Untitled Folder' successfully>