2014-02-06 89 views
3

我试图解压与7z.exe文件和密码包含在它的特殊字符巨蟒7Z密码有特殊字符

EX。 &)kra932(lk0¤23

通过执行以下命令:

subprocess.call(['7z.exe', 'x', '-y', '-ps^&)kratsaslkd932(lkasdf930¤23', 'file.zip']) 

7z.exe启动不错,但它说密码错误。

这是我创建的一个文件,它使我疯狂。

如果我在Windows命令行中运行该命令它运行良好

7z.exe x -y -ps^&)kratsaslkd932(lkasdf930¤23 file.zip 

我怎样才能让蟒蛇逃出&人物?


@Wim问题上的密码发生&,因为当我执行

7z.exe x -y -ps^&)kratsaslkd932(lkasdf930¤23 file.zip 

它说无效的命令')kratsaslkd932(lkasdf930¤23'使用python 2.76 IM,不能升级到3.x由于公司的工具,只能在2.76上运行

+0

听起来像Python 2.7!如果是这样的话:'subprocess.call(['7z.exe','x','-y',u'-ps ^&)kratsaslkd932(lkasdf930¤23','file.zip'])' – Kroltan

+0

在哪个字符你的密码开始了吗?示例密码与您实际使用的密码不同。 – wim

+0

什么版本的Python?什么样的特殊字符,例如非字母数字,unicode,bash转义字符?我在你的例子中看到所有三个。 – dimo414

回答

0

我建议使用原始字符串和shlex模块(特别是在Windows上)并且不支持除ASCII以外的任何编码。

import shlex 
import subprocess 

cmd = r'7z.exe x -y -p^&moreASCIIpasswordchars file.zip' 
subprocess.call(shlex.split(cmd)) 

回到非ASCII字符的问题...

我敢肯定,在Python版本< 3,你根本就不能使用非ASCII字符。我不是C专家,但请注意2.73.3之间的差异。前者使用“标准”字符,而后者使用宽字符。