我正在尝试删除驱动器上的文件夹集合。这些目录不为空。我提出了如下解决方案:
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上的删除键可以正常工作。有人可以给我一个命令,将删除此目录而不会出错吗?
答案 0 :(得分:1)
首先你应该避免默默地吞下一个异常,但至少要打印或记录它。但是很多事情都可能发生在文件中,它们可能具有Hidden,System或ReadOnly属性。当前用户可能没有文件权限,但只能在包含文件夹上。由于Python是多平台的,因此对于特定操作系统(在您的情况下为Windows)而言,其高级命令可能不如本机操作系统那么优化。
您应该首先尝试在cmd
窗口中确认命令rd /s folder
正确删除shutil.rmtree
无法删除的文件夹,如果是,请询问python,然后执行它subprocess
模块:
subprocess.call("rd /s/q " + strippedPath)