Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用python zipfile库解压缩带有密码的.zip文件_Python_Python 3.x_Zipfile - Fatal编程技术网

无法使用python zipfile库解压缩带有密码的.zip文件

无法使用python zipfile库解压缩带有密码的.zip文件,python,python-3.x,zipfile,Python,Python 3.x,Zipfile,我用Gnome归档管理器(Ubuntu操作系统)创建了一个zip文件。我用密码创建了zip文件,并尝试使用zipfilePython库解压它: import zipfile file_name = '/home/mahmoud/Desktop/tester.zip' pswd = 'pass' with zipfile.ZipFile(file_name, 'r') as zf: zf.printdir() zf.extractall(path='/home/mahmoud/

我用Gnome归档管理器(Ubuntu操作系统)创建了一个zip文件。我用密码创建了zip文件,并尝试使用
zipfile
Python库解压它:

import zipfile

file_name = '/home/mahmoud/Desktop/tester.zip'
pswd = 'pass'

with zipfile.ZipFile(file_name, 'r') as zf:
    zf.printdir()
    zf.extractall(path='/home/mahmoud/Desktop/testfolder', pwd = bytes(pswd, 'utf-8'))
当我运行这段代码时,我得到了以下错误,我非常确定密码是正确的。错误是:

File "/home/mahmoud/anaconda3/lib/python3.7/zipfile.py", line 1538, in open
  raise RuntimeError("Bad password for file %r" % name)

RuntimeError: Bad password for file <ZipInfo filename='NegSkew.pdf' compress_type=99 filemode='-rw-rw-r--' external_attr=0x8020 file_size=233252 compress_size=199427>
文件“/home/mahmoud/anaconda3/lib/python3.7/zipfile.py”,第1538行,打开
引发运行时错误(“文件%r”%name的密码错误)
RuntimeError:文件的密码错误

如何解压文件?

zipfile库不支持AES加密(compress_type=99),只支持CRC-32,如
ZipDecrypter
代码()中所述
\u ZipDecrypter
在ZipFile.open中引发特定运行时错误之前被调用和使用,该错误可从
提取所有
进行跟踪

您可以使用
pyzippers
library()而不是
zipfile
来解压缩文件:

import pyzipper

file_name = '/home/mahmoud/Desktop/tester.zip'
pswd = 'pass'

with pyzipper.AESZipFile(file_name) as zf:
    zf.extractall(path='/home/mahmoud/Desktop/testfolder', pwd = bytes(pswd, 'utf-8'))

我试过你的代码,它对我有效,你能用另一个程序用同样的密码解压它吗?为什么文件名是“negswek.pdf”例外?我试过用winrar和7z解压文件,两个都很好,密码都是正确的。所有这些都是在windows机器@NicoMüllerHmm上完成的。这是一个有趣的问题,我能够重现你们的观察结果。我运行的是Ubuntu18.04.4LTS和Python3.7.5。我制作了一个简单的文本文件,在Gnome归档管理器中对其进行压缩和加密。和您一样,当我尝试执行
提取所有
时,我看到文件的
密码错误
。这绝对是得到了我的支持票,我会戳它一点。我倾向于认为Python的内置ZIP库可能不支持Gnome的存档管理器使用的加密算法,但我还没有任何东西来支持它。@liorr异常显示要从ZIP中提取的文件的名称