web-dev-qa-db-fra.com

Impossible de supprimer un dossier avec OS.ReMove (WindowsError: [Erreur 5] Access est refusé: 'C: / Temp / Nouveau dossier')

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?

14
Sergio Da Silva

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.

18
appusajeev

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

9
8bitwide

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))
7
Rakesh

Pour Python 3.6, le mode d'autorisation de fichier doit être 0O777:

os.chmod(filePath, 0o777)
os.remove(filePath)
5

Si vous voulez supprimer le dossier, vous pouvez utiliser

os.rmdir(path)
1
a w

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

0
Sushen Sharma

Si c'est un répertoire, alors utilisez simplement:

os.rmdir("path")
0
sofblocks