我正在使用python zlib,我正在执行以下操作:
zlib.compress
)zlib.decompress
)一切正常,但是当我直接从S3下载文件并尝试使用标准zip程序打开它时,我收到错误。我注意到,而不是PK,文件的开头是:
xµ}ko$7’םחע¯¸?ְ)$“שo³¶w¯1k{`
我很灵活,不介意从zlib切换到另一个包,但它必须是pythonic(Heroku兼容)
谢谢!
答案 0 :(得分:7)
答案 1 :(得分:0)
如果这只是压缩字符串,那么zlib
就是要走的路。 zip文件用于存储文件甚至整个目录树和文件。它保存文件元数据。它可以(某种方式)用于,但不适合存储字符串。
如果您的应用程序只是存储和检索压缩字符串,那么“直接从S3下载文件并尝试使用标准zip程序打开它们”毫无意义。你为什么要这样做?
编辑:
S3通常用于存储文件,而不是字符串。你说你想存储字符串。您确定S3是适合您的服务吗?你看过SimpleDB了吗?
考虑您想要坚持使用S3并希望上传压缩字符串。您的S3客户端库很可能希望接收类似文件的对象以进行读取。要有效地解决这个问题,请将压缩后的字符串存储在Python StringIO
对象中(在内存文件中),并将此内存中文件提供给S3客户端库,以便将其上载到S3。
下载也一样。使用Python。也用于调试目的。尝试将字符串强制转换为zipfile是没有意义的。与使用普通的zlibbed字符串相比,会有更多的开销(由于文件元数据)。
答案 2 :(得分:0)
为了调试目的而编写zip文件的替代方法(完全是错误的应用程序格式)是使用可以解压缩zlib流的实用程序,这对于您的应用程序来说是完全正确的格式。该实用程序为pigz
,-z
选项。