我想从dataset3文件夹中删除dataset文件夹。但是以下代码不会删除数据集。
首先,我想检查数据集中是否已存在数据集,然后删除数据集。
有人可以在下面的代码中指出我的错误吗?
for files in os.listdir("dataset3"):
if os.path.exists("dataset"):
os.system("rm -rf "+"dataset")
答案 0 :(得分:16)
os.rmdir()
仅在目录为空时才有效,但以下内容并不关心(即使有子目录)。它比使用os.system()
和rm
命令更便携。
import shutil
import os
dirpath = os.path.join('dataset3', 'dataset')
if os.path.exists(dirpath) and os.path.isdir(dirpath):
shutil.rmtree(dirpath)
答案 1 :(得分:10)
os.remove()
是删除文件。
os.rmdir()
将删除一个空目录。
shutil.rmtree()
是删除目录及其所有内容。
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")
答案 2 :(得分:4)
更好地设置ignore_errors
:
import shutil
shutil.rmtree('/folder_name', ignore_errors=True)
这更具可读性和简洁性。
请注意,它将忽略所有错误,而不仅仅是目录丢失错误。
答案 3 :(得分:0)
这样做:
for files in os.listdir('dataset3'):
if files == 'dataset':
os.rmdir(os.path.join(os.getcwd() + 'dataset3', files))
答案 4 :(得分:0)
试试这个:
$ bash sumnumfile.sh dat/numfile.txt
sum: 130
你不需要os.path.exists(),因为os.listdir()已经告诉你它存在。
如果你的foldernames是静态的,你可以用:
for files in os.listdir("dataset3"):
if files=="dataset":
fn=os.path.join("dataset3", files)
os.system("rm -rf "+fn)
break
或作为:
if os.path.exists("dataset3/dataset"):
os.system("rm -rf dataset3/dataset")