我正在尝试利用Zlib进行文本压缩。
例如我有一个字符串T='blah blah blah blah'
我需要为此字符串压缩它。我正在使用S=zlib.compress(T)
来压缩它。现在我想要的是获得S
的非二进制形式,以便我可以解压缩T
但是在另一个程序中。
谢谢!
编辑:我想我有办法解决我想要的问题。这是方法:import zlib, base64
text = 'STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW '
code = base64.b64encode(zlib.compress(text,9))
print code
给出了:
eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU=
现在我可以将此代码复制到另一个程序以获取原始变量:
import zlib, base64
s='eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU='
data = zlib.decompress(base64.b64decode(s))
print data
如果您知道任何其他压缩方法可以提供与上述代码一致的更好结果,请建议。
答案 0 :(得分:11)
计划1:
T = 'blah blah blah blah'
S = zlib.compress(T)
with open("temp.zlib", "wb") as myfile:
myfile.write(S)
这会将压缩字符串保存在名为temp.zlib
的文件中,以便程序2稍后可以检索并解压缩它。
计划2:
with open("temp.zlib", "rb") as myfile:
S = myfile.read()
T = zlib.decompress(S)