Python 2 代码:
import os
a = '谢谢大家帮助我。'
b = a.decode('utf-8').encode('gbk')
command = '7z x test.zip -p%s' % (b,)
os.system(command)
问题描述:
- 现在有一个
test.zip压缩包,密码为“谢谢大家帮助我。”这个压缩包是在 Windows 环境下用 winrar5.5 或者 winzip22 创建的。 - 问题是由于此密码为 GBK 编码,所以在 Linux 命令:'7z x test.zip -p 谢谢大家帮助我。' 是解压不出来的。
- 正确的解压方法应该是要把密码用 iconv 重新编码,其在 shell 里面直接的方法为: 'echo -n '谢谢大家帮助我' | iconv -f utf8 -t gbk | iconv -f iso-8859-1 -t utf8 | xargs -i 7z x t.zip -p{}'
请问在 Python 3 里面应该怎么写才能让 os.system 正确执行?
补充说明:
- 我并不想使用我在描述里面那个超长的式子,希望像 Python 2 里面那样简洁,这应该是一个编码问题。
- 我已经发现了下面这段 Python 3 代码可以 print 出和 Python 2 同样的内容(结果都是'7z x test.zip -pлл���Ұ����ҡ�'),但是 os.system 执行结果显示错误:
import os
a = '谢谢大家帮助我。'
b = bytes(a,'gbk').decode('utf-8',errors='replace')
command = '7z x t.zip -p%s' % (b,)
os.system(command)