有必要为Linux编写一个python脚本,脚本的任务之一是将受密码保护的档案解压到一个文件夹中,以便进一步处理这些文件(我刚刚拿起python)下面是脚本:
from subprocess import call
call( "unzip -P infected 'arch0.zip' -d all/" )
错误文字:
回溯(最后一次调用):文件“Clam.py”,第 6 行,在 z.extractall() 文件“/usr/lib/python2.7/zipfile.py”,第 1040 行,在 extractall self.extract(zipinfo , path, pwd) File "/usr/lib/python2.7/zipfile.py", line 1028, in extract return self._extract_member(member, path, pwd) File "/usr/lib/python2.7/zipfile. py”,第 1082 行,在 _extract_member 中,以 self.open(member, pwd=pwd) 作为源,\文件“/usr/lib/python2.7/zipfile.py”,第 990 行,打开“提取所需的密码” %name RuntimeError: 文件已加密,提取需要密码
回答
import zipfile
zipcheck = zipfile.is_zipfile('./test.zip')
if zipcheck == True:
z = zipfile.ZipFile('./test.zip', 'r')
z.extractall( pathToDir, pwd = 'password' )
z.close()
else:
print('Not valid ZIP')


模块中的函数
subprocess期望命令作为列表,而不是默认字符串:您的命令可以使用以下命令转换为列表
shlex.split():也就是说,运行
unzip命令应该如下所示:如果您想在 Python 中将带有密码的 zip 存档解压缩到一个
all文件夹中: