我正在尝试使用解压缩文件,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.7和3.3之间的区别。前者使用“标准”字符,而后者使用宽字符。