python使用gzip或zlib压缩多个数据

时间:2015-02-18 17:47:45

标签: python-3.x gzip

假设我有多个数据:比如3个python array s(或numpy array s)和2个字符串列表。

如何将压缩二进制格式的每个数据存储在同一个zip文件中?

我查看了https://docs.python.org/3.4/library/gzip.html处的文档,示例显示了如何编写使用gzip.open打开文件的单个数据,以及writelines来写出单个数据。

我正在使用Python 3.4

1 个答案:

答案 0 :(得分:1)

要将多个文件放入gzip压缩文件中,请使用w:gz模式StringIO。然后,您可以使用tarfile.open方法将序列化对象放入其中(使用import numpy np_array_data = numpy.zeros(100) list_of_strs = ['abc'] * 100 import io import pickle np_array_data = io.BytesIO() numpy.save(np_array_data, np_array) np_array_data.seek(0) str_data = io.BytesIO() pickle.dump(list_of_strs, str_data) str_data.seek(0) with tarfile.open('output.tar.gz', mode='w:gz') as dest_file: dest_file.addfile(tarfile.TarInfo('np_data'), np_array_data) dest_file.addfile(tarfile.TarInfo('str_data'), str_data) 作为fileobj)。

{{1}}

如果您只想将多个numpy数组放入压缩文件中,可以使用addfile