Je travaille sur un cas d'essai pour lequel je crée des sous-résidents. Cependant, je ne semble pas avoir la permission de les supprimer. Mon UA est un compte administrateur (Windows XP).
J'ai d'abord essayé:
folder="c:/temp/"
for dir in os.listdir(folder):
os.remove(folder+dir)
puis
folder="c:/temp/"
os.remove(folder+"New Folder")
parce que je suis sûr que "nouveau dossier" est vide. Cependant, dans tous les cas, je reçois:
Traceback (most recent call last):
File "<string>", line 3, in <module>
WindowsError: [Error 5] Access is denied: 'c:/temp/New Folder'
Quelqu'un sait-il ce qui ne va pas?
essayez le module de fixation intégré
shutil.rmtree(folder+"New Folder")
cela supprime récursivement un répertoire, même s'il a du contenu.
os.remove()
ne fonctionne que sur les fichiers. Cela ne fonctionne pas sur les répertoires. Selon la Documentation :
os.ReMove (Chemin) Supprimer (Supprimer) le chemin de fichier. Si le chemin est un répertoire, OsError est soulevé; Voir RMDIR () ci-dessous pour supprimer un répertoire. Ceci est identique à la fonction Dislink () documentée ci-dessous. Sous Windows, une tentative de supprimer un fichier utilisé provoque une exception à exception; Sur UNIX, la saisie de répertoire est supprimée, mais le stockage attribué au fichier n'est pas disponible tant que le fichier d'origine n'est plus utilisé.
utilisez os.removedirs()
pour répertoires
U peut utiliser le module Shuttilis pour supprimer le dir et ses sous-dossiers
import os
import shutil
for dir in os.listdir(folder):
shutil.rmtree(os.path.join(folder,dir))
Pour Python 3.6, le mode d'autorisation de fichier doit être 0O777:
os.chmod(filePath, 0o777)
os.remove(filePath)
Si vous voulez supprimer le dossier, vous pouvez utiliser
os.rmdir(path)
La raison pour laquelle vous ne pouvez pas supprimer les dossiers, car pour supprimer le sous-dossier en C: lecteur, vous avez besoin de privilèges d'administration appelez des privilèges d'administration à python ou faire le piratage suivant
Faites un simple fichier .bat avec la commande shell suivante
del /q "C:\Temp\*"
FOR /D %%p IN ("C:\temp\*.*") DO rmdir "%%p" /s /q
Enregistrez-le comme fichier.bat et appelez ce fichier BAT à partir de votre python fichier
Le fichier BAT gérera la suppression de sous-dossiers de C: lecteur
Si c'est un répertoire, alors utilisez simplement:
os.rmdir("path")