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")
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)
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")
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
Cela le fera:
for files in os.listdir('dataset3'):
if files == 'dataset':
os.rmdir(os.path.join(os.getcwd() + 'dataset3', files))