如何检查文件夹的存在然后将其删除?

sar*_*ara 20 python linux rmdir python-2.7

我想从dataset3文件夹中删除dataset文件夹.但是以下代码不会删除数据集.首先,我想检查数据集中是否已存在数据集,然后删除数据集.
有人可以在下面的代码中指出我的错误吗?

for files in os.listdir("dataset3"):
    if os.path.exists("dataset"):
        os.system("rm -rf "+"dataset")
Run Code Online (Sandbox Code Playgroud)

mar*_*eau 27

os.rmdir()只有当目录为空时才会起作用,但是下面的内容并不关心(即使有子目录).它比使用os.system()rm命令更便携.

import os
import shutil

dirpath = os.path.join('dataset3', 'dataset')
if os.path.exists(dirpath) and os.path.isdir(dirpath):
    shutil.rmtree(dirpath)
Run Code Online (Sandbox Code Playgroud)


Hua*_*Hao 11

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")
Run Code Online (Sandbox Code Playgroud)


ved*_*ant 9

最好设置ignore_errors

import shutil

shutil.rmtree('/folder_name', ignore_errors=True)
Run Code Online (Sandbox Code Playgroud)

这更具可读性和简洁性。

请注意,它将忽略所有错误,而不仅仅是 dir 丢失的错误。

  • 是的,所以最好不要这样做,真的:) - 否则你将不知道它是否无法清除文件夹。 (6认同)

Leo*_*ivì 0

这将做到这一点:

for files in os.listdir('dataset3'):
     if files == 'dataset':
         os.rmdir(os.path.join(os.getcwd() + 'dataset3', files))
Run Code Online (Sandbox Code Playgroud)