【问题标题】:Deleting Folders on drive删除驱动器上的文件夹
【发布时间】:2014-12-25 13:47:04
【问题描述】:

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

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 上按删除键可以正常工作。有人可以给我一个命令来删除这个目录而不会出错吗?

【问题讨论】:

  • 我在这里真的很明显,但这是因为 Python 没有您的操作系统的许可来完成该操作。这不是您可以在代码中解决的问题。虽然可能有类似subprocess 的解决方法。
  • 是什么让这个文件夹如此特别?它会删除其余部分吗?

标签: python windows python-3.x


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多