1

所以这是我的问题。我有一个 python 脚本,它需要一个 zipfile 并提取其内容。然后基于一些限制,我将尝试删除刚刚提取其内容的文件夹。出于某种原因,当我尝试删除该文件夹时,我收到一个错误,WindowsError: [Error 5] Access is denied: 'Foldername'。简单的代码如下所示

wzip = zipfile.ZipFile('zipfile.zip')

wzip.extractall()

wzip.close()

os.remove('ExtractedFolder')

如果我在解释器中运行它,我会得到以下信息:

回溯(最后一次调用):文件“”,第 1 行,Windows 错误:[错误 5] 访问被拒绝:'ExtractedFolder'

我在 Windows Vista 32 位上使用 Python 2.6,我有点困惑为什么会发生这种情况。

4

2 回答 2

4

可能的原因很多。

  1. 您需要使用os.rmdir删除目录
  2. 您需要先清空文件夹 - 请记住,Windows 命令 rmdir需要一个/S选项来删除内容,而 Python 可能会使用它。
  3. 解压缩是否也使用存档的属性?可以应用只读属性。
  4. 在删除之前,您是否从该文件夹中读取任何内容?你可能没有关闭它。
  5. Windows 可能会导致包含异常字符的文件名出现类似问题
于 2010-09-10T21:30:01.880 回答
1

我在 Windows 上看到一个可能的问题,即您可能在此目录中有一个打开的文件。确保您明确关闭您使用打开的所有文件file.close()(尽管您的示例代码看起来正确)。

此外,看看它可能很有用shutils.rmtree:它可以递归地删除目录并捕获错误。

于 2010-09-11T13:14:22.927 回答