我无法删除刚从zip文件中提取的文件夹
我遇到了一个问题。我有一个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
可能有很多原因导致这个问题。
- 你需要使用
os.rmdir
来删除文件夹。 - 你需要先清空文件夹——记住,Windows命令
rmdir
需要加上/S
选项才能删除里面的内容,而Python可能也是这样做的。 - 解压缩的时候,是否也在使用压缩文件的属性?可能会有只读属性被应用。
- 在你删除文件夹之前,有没有在读取里面的东西?你可能没有关闭它。
- Windows在处理包含特殊字符的文件名时,可能会引发类似的问题。