我无法删除刚从zip文件中提取的文件夹

1 投票
2 回答
2478 浏览
提问于 2025-04-16 03:59

我遇到了一个问题。我有一个Python脚本,它可以读取一个压缩文件(zip文件)并解压里面的内容。然后,根据一些条件,我想删除刚刚解压出来的文件夹。但是,当我尝试删除这个文件夹时,出现了一个错误,提示“WindowsError: [Error 5] 访问被拒绝:'Foldername'”。我的代码大概是这样的:

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

wzip.extractall()

wzip.close()

os.remove('ExtractedFolder')

如果我在解释器中运行这段代码,得到的错误信息是:

Traceback (most recent call last):
File "", line 1, in
WindowsError: [Error 5] 访问被拒绝:'ExtractedFolder'

我在Windows Vista 32位系统上使用Python 2.6,现在有点搞不懂为什么会出现这个问题。

2 个回答

2

我看到在Windows系统上可能会出现一个问题,那就是你可能在这个目录里打开了一个文件。确保你明确地关闭所有你打开的文件,使用 file.close() 来关闭(你的示例代码看起来是对的)。

另外,看看 shutils.rmtree 也许会有帮助:它可以递归地删除目录,并且能够捕捉错误。

4

可能有很多原因导致这个问题。

  1. 你需要使用 os.rmdir 来删除文件夹。
  2. 你需要先清空文件夹——记住,Windows命令 rmdir 需要加上 /S 选项才能删除里面的内容,而Python可能也是这样做的。
  3. 解压缩的时候,是否也在使用压缩文件的属性?可能会有只读属性被应用。
  4. 在你删除文件夹之前,有没有在读取里面的东西?你可能没有关闭它。
  5. Windows在处理包含特殊字符的文件名时,可能会引发类似的问题。

撰写回答