我在尝试提取 zip 文件时遇到 PermissionError。我已经在这里进行了很多讨论,但仍然无法解决我的问题。
目前我正在 Windows 8 机器上使用 Python 3.6.1。我通过以下代码创建了一个新目录:
import os,zipfile
newpath = 'C:\\home\\vivvin\\shKLSE'
#newpath = r'C:\\home\\vivvin\\shKLSE'
if not os.path.exists(newpath):
os.makedirs(newpath)
接下来我下载了一个 zip 文件并保存到
newpath
目录中。
现在我尝试将 zip 文件中的所有文件(10 个 csv 文件)提取到
newpath
目录中。为了实现这一点,我编写了以下代码:
import os,zipfile
newpath = 'C:\\home\\vivvin\\shKLSE'
path_to_zip_file = newpath
directory_to_extract_to = newpath
#zip_ref = zipfile.ZipFile(newpath, 'r')
zip_ref = zipfile.ZipFile(newpath, 'w')
zip_ref.extractall(newpath)
zip_ref.close()
但是每次我都会收到错误:
Traceback (most recent call last):
File "C:/Users/AtechM_03/PycharmProjects/Webinar/SeleniumScripts/extract.py", line 6, in <module>
zip_ref = zipfile.ZipFile(newpath, 'w')
File "C:\Python\lib\zipfile.py", line 1082, in __init__
self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'C:\\home\\vivvin\\shKLSE'
我手动观察了 zip 文件的属性,似乎有一条安全消息和一个
Unblock
按钮。截至目前,我不知道如何Unblock
它。
有人可以帮我吗?预先感谢。
我在尝试写入文件时遇到了类似的问题。
对我有用的修复:
右键单击您的 PyCharm 应用程序并以管理员身份运行它。
我在解压缩文件夹“temp.zip”时遇到了同样的错误,并且只提取了文件。 就我而言,我有一个目录,其中包含文件夹“temp”和一个名为“temp.zip”的 zip 文件。
def unzip(path, filename):
with ZipFile(path, 'r') as zipobj:
zipobj.extract(member=filename)
当我运行此文件时,我收到错误消息:
...
"test.py", line 259, in unzip
with ZipFile(path, 'r') as zipobj:
File "C:\Program Files\Python36\lib\zipfile.py", line 1090, in __init__
self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied
问题是,
zipobj.extract()
需要创建一个名为 temp 的文件夹并(临时)提取内容。但这个文件夹已经存在了。 --> 我收到了权限被拒绝的错误。
解决方案:
我猜是因为你的字典在C盘(windows盘,有时禁止写入和擦除),如果你换到D盘也许可以用。
您收到此错误的原因是因为 zipfile.ZipFile() 期望您做 3 个主要事情: 首先是路径(如果要指定一个),然后是文件名和模式“r/w”。
所以再次查看您的代码 “newpath”是一个目录,这意味着您仍然需要为它们提供文件名。这里期待您想要存档,因为您使用的是“w”书写模式。
然后你要求 zipfile.extractall(),这意味着你需要 'r' 模式,同时你需要指向你想要解压的文件夹。
您的代码中有很多重复,相信您在排序时会意识到。