删除驱动器上的文件夹

时间:2014-10-29 17:53:06

标签: python windows python-3.x

我正在尝试删除驱动器上的文件夹集合。这些目录不为空。我提出了如下解决方案:

import shutil
import os

path = "main/"
folderList = ['Blah', 'Blah', 'Blah'];

print ("Cleaning Project at %s" % path)

for c in folderList:
    strippedPath = (path + c).strip("\n")
    print ("Cleaning path " + strippedPath)
    if os.path.exists(strippedPath):
        try:
            shutil.rmtree(strippedPath)
        except OSError as why:
            pass

print ("Done Cleaning Project")

问题是如果没有try / catch我会收到一个错误

PermissionError: [WinError 5] Access is denied: 'PathToFileHere'

按下Windows上的删除键可以正常工作。有人可以给我一个命令,将删除此目录而不会出错吗?

1 个答案:

答案 0 :(得分:1)

首先你应该避免默默地吞下一个异常,但至少要打印或记录它。但是很多事情都可能发生在文件中,它们可能具有Hidden,System或ReadOnly属性。当前用户可能没有文件权限,但只能在包含文件夹上。由于Python是多平台的,因此对于特定操作系统(在您的情况下为Windows)而言,其高级命令可能不如本机操作系统那么优化。

您应该首先尝试在cmd窗口中确认命令rd /s folder正确删除shutil.rmtree无法删除的文件夹,如果是,请询问python,然后执行它subprocess模块:

subprocess.call("rd /s/q " + strippedPath)