带有特殊字符的python 7z密码

Bar*_*ool 5 python 7zip unzip

我正在尝试使用解压缩文件,7z.exe密码上包含特殊字符

例如 &)kra932(lk0¤23

通过执行以下命令:

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

7z.exe 可以正常启动,但说密码错误。

这是我创建的文件,它使我发疯。

如果我在Windows命令行上运行命令,它将运行正常

7z.exe x -y -ps^&)kratsaslkd932(lkasdf930¤23 file.zip
Run Code Online (Sandbox Code Playgroud)

如何使python转义&字符?


@Wim出现问题并在密码上,因为当我执行时

7z.exe x -y -ps^&)kratsaslkd932(lkasdf930¤23 file.zip 
Run Code Online (Sandbox Code Playgroud)

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

小智 0

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

import shlex
import subprocess

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

回到非 ASCII 字符问题...

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