web-dev-qa-db-fra.com

Comment vérifier l'existence d'un dossier puis le supprimer?

Je souhaite supprimer le dossier d'ensemble de données du dossier dataset3. Mais le code suivant ne supprime pas l'ensemble de données. Je veux d'abord vérifier si l'ensemble de données existe déjà dans l'ensemble de données, puis supprimer l'ensemble de données.
Quelqu'un peut-il s'il vous plaît signaler mon erreur dans le code suivant?

for files in os.listdir("dataset3"):
    if os.path.exists("dataset"):
        os.system("rm -rf "+"dataset")
16
sara

os.rmdir() ne fonctionnerait que si le répertoire est vide, mais ce qui suit ne fait rien (même s'il y a des sous-répertoires). C'est aussi plus portable que d'utiliser os.system() et la commande rm.

import shutil
import os

dirpath = os.path.join('dataset3', 'dataset')
if os.path.exists(dirpath) and os.path.isdir(dirpath):
    shutil.rmtree(dirpath)
25
martineau

os.remove() consiste à supprimer un fichier.

os.rmdir() consiste à supprimer un répertoire vide.

shutil.rmtree() consiste à supprimer un répertoire et tout son contenu.

import os

folder = "dataset3/"

# Method 1
for files in os.listdir(folder):
    if files == "dataset":
        os.remove(folder + "dataset")

# Method 2
if os.path.exists(folder + "dataset"):
    os.remove(folder + "dataset")
11
Huang Yen Hao

essaye ça:

for files in os.listdir("dataset3"):
  if files=="dataset":
    fn=os.path.join("dataset3", files)
    os.system("rm -rf "+fn)
    break

Vous n'avez pas besoin de os.path.exists () car os.listdir () vous l'a déjà dit, qu'il existe.

Et si vos noms de dossiers sont statiques, vous pouvez le faire avec:

if os.path.exists("dataset3/dataset"):
  os.system("rm -rf dataset3/dataset")

ou comme:

try:
  os.system("rm -rf dataset3/dataset")
except:
  pass
0
dede

Cela le fera:

for files in os.listdir('dataset3'):
     if files == 'dataset':
         os.rmdir(os.path.join(os.getcwd() + 'dataset3', files))
0