3473 votes

Comment supprimer un fichier ou un dossier en Python ?

Comment supprimer un fichier ou un dossier ?

4959voto

RichieHindle Points 98544

Path à partir de la version Python 3.4+. pathlib expose également ces méthodes d'instance :

9 votes

Os.rmdir() sous Windows supprime également le lien symbolique du répertoire même si le répertoire cible n'est pas vide.

109 votes

Si le fichier n'existe pas, os.remove() lève une exception, il peut donc être nécessaire de vérifier que l'option os.path.isfile() d'abord, ou envelopper dans un try .

2 votes

J'aimerais que Path.unlink 1/ soit récursif 2/ ajoute une option pour ignorer FileNotfoundError.

767voto

anand tripathi Points 3051

Syntaxe Python pour supprimer un fichier

import os
os.remove("/tmp/<file_name>.txt")

Ou

import os
os.unlink("/tmp/<file_name>.txt")

Ou

pathlib Bibliothèque pour Python version >= 3.4

file_to_rem = pathlib.Path("/tmp/<file_name>.txt")
file_to_rem.unlink()

Path.unlink(missing_ok=False)

Méthode de déliaison utilisée pour supprimer le fichier ou le lien symbolik.

Si missing_ok est false (la valeur par défaut), FileNotFoundError est soulevé si le chemin n'existe pas.
Si missing_ok est vrai, les exceptions FileNotFoundError seront ignorées (même comportement que la commande POSIX rm -f).
Modifié dans la version 3.8 : Le paramètre missing_ok a été ajouté.

Meilleure pratique

  1. Tout d'abord, vérifiez si le fichier ou le dossier existe ou non, puis supprimez uniquement ce fichier. Ceci peut être réalisé de deux façons :
    a. os.path.isfile("/path/to/file")
    b. Utilisez exception handling.

EXEMPLE para os.path.isfile

#!/usr/bin/python
import os
myfile="/tmp/foo.txt"

## If file exists, delete it ##
if os.path.isfile(myfile):
    os.remove(myfile)
else:    ## Show an error ##
    print("Error: %s file not found" % myfile)

Traitement des exceptions

#!/usr/bin/python
import os

## Get input ##
myfile= raw_input("Enter file name to delete: ")

## Try to delete the file ##
try:
    os.remove(myfile)
except OSError as e:  ## if failed, report it back to the user ##
    print ("Error: %s - %s." % (e.filename, e.strerror))

SORTIE RESPECTIVE

Enter file name to delete : demo.txt
Error: demo.txt - No such file or directory.

Enter file name to delete : rrr.txt
Error: rrr.txt - Operation not permitted.

Enter file name to delete : foo.txt

Syntaxe Python pour supprimer un dossier

shutil.rmtree()

Exemple pour shutil.rmtree()

#!/usr/bin/python
import os
import sys
import shutil

# Get directory name
mydir= raw_input("Enter directory name: ")

## Try to remove tree; if failed show an error using try...except on screen
try:
    shutil.rmtree(mydir)
except OSError as e:
    print ("Error: %s - %s." % (e.filename, e.strerror))

47 votes

Le traitement des exceptions est recommandé plutôt que la vérification car le fichier pourrait être supprimé ou modifié entre les deux lignes (TOCTOU : fr.wikipedia.org/wiki/Time_of_check_to_time_of_use ) Voir la FAQ Python docs.python.org/3/glossary.html#term-eafp

5 votes

Aussi EAFP est préféré à LBYL en Python.

2 votes

Quel est l'intérêt d'attraper l'exception dans le tout dernier exemple ?

129voto

Mihai Maruseac Points 10647

Utilisez

shutil.rmtree(path[, ignore_errors[, onerror]])

(Voir la documentation complète sur shutil ) et/ou

os.remove

et

os.rmdir

(Documentation complète sur os .)

9 votes

Veuillez ajouter l'interface pathlib (nouvelle depuis Python 3.4) à votre liste.

102voto

flycee Points 8199

Voici une fonction robuste qui utilise les deux os.remove y shutil.rmtree :

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path) or os.path.islink(path):
        os.remove(path)  # remove the file
    elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))

16 votes

C'est-à-dire 8 lignes de code pour simuler l'ISO C remove(path); appeler.

2 votes

@Kaz est d'accord pour dire que c'est ennuyeux, mais est-ce que la suppression concerne les arbres ? :-)

6 votes

os.path.islink(file_path): un bug, devrait être os.path.islink(path):

56voto

DS_ShraShetty Points 456

Suppression d'un fichier ou d'un dossier en Python

Il existe plusieurs façons de supprimer un fichier en Python, mais les meilleures sont les suivantes :

  1. os.remove() supprime un fichier.
  2. os.unlink() supprime un fichier. C'est un nom Unix de la méthode remove().
  3. shutil.rmtree() supprime un répertoire et tout son contenu.
  4. pathlib.Path.unlink() supprime un seul fichier Le module pathlib est disponible dans Python 3.4 et plus.

os.remove()

Exemple 1 : Exemple de base pour supprimer un fichier en utilisant la méthode os.remove().

import os
os.remove("test_file.txt")
print("File removed successfully")

Exemple 2 : Vérifier l'existence d'un fichier avec os.path.isfile et le supprimer avec os.remove

import os
#checking if file exist or not
if(os.path.isfile("test.txt")):
    #os.remove() function to remove the file
    os.remove("test.txt")
    #Printing the confirmation message of deletion
    print("File Deleted successfully")
else:
print("File does not exist")
#Showing the message instead of throwig an error

Exemple 3 : Programme Python pour supprimer tous les fichiers avec une extension spécifique

import os 
from os import listdir
my_path = 'C:\Python Pool\Test\'
for file_name in listdir(my_path):
    if file_name.endswith('.txt'):
        os.remove(my_path + file_name)

Exemple 4 : Programme Python pour supprimer tous les fichiers d'un dossier

Pour supprimer tous les fichiers d'un répertoire particulier, il suffit d'utiliser le symbole * comme chaîne de caractères. #Importation des modules os et glob import os, glob #Loop Through the folder projects all files and deleting them one by one for file in glob.glob("pythonpool/*") : os.remove(file) print("Supprimé " + str(file))

os.unlink()

os.unlink() est un alias ou un autre nom de os.remove() . Comme dans le système d'exploitation Unix, remove est également connu sous le nom de unlink. Note : Toutes les fonctionnalités et la syntaxe sont les mêmes pour os.unlink() et os.remove(). Ces deux méthodes sont utilisées pour supprimer le chemin d'accès au fichier Python. Ce sont toutes deux des méthodes du module os des bibliothèques standard de Python qui exécutent la fonction de suppression.

shutil.rmtree()

Exemple 1 : Programme Python pour supprimer un fichier en utilisant shutil.rmtree()

import shutil 
import os 
# location 
location = "E:/Projects/PythonPool/"
# directory 
dir = "Test"
# path 
path = os.path.join(location, dir) 
# removing directory 
shutil.rmtree(path) 

Exemple 2 : Programme Python pour supprimer un fichier en utilisant shutil.rmtree()

import shutil 
import os 
location = "E:/Projects/PythonPool/"
dir = "Test"    
path = os.path.join(location, dir) 
shutil.rmtree(path) 

pathlib.Path.rmdir() pour supprimer un répertoire vide

Le module Pathlib fournit différentes façons d'interagir avec vos fichiers. Rmdir est l'une des fonctions de Pathlib qui vous permet de supprimer un dossier vide. Tout d'abord, vous devez sélectionner la fonction Path() pour le répertoire, puis l'appel de la méthode rmdir() vérifiera la taille du dossier. S'il est vide, il le supprimera.

C'est un bon moyen de supprimer des dossiers vides sans craindre de perdre des données réelles.

from pathlib import Path
q = Path('foldername')
q.rmdir()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X