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

时间:2017-05-03 16:08:03

标签: python linux python-2.7 rmdir

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

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

5 个答案:

答案 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")