假设我有多个数据:比如3个python array
s(或numpy array
s)和2个字符串列表。
如何将压缩二进制格式的每个数据存储在同一个zip文件中?
我查看了https://docs.python.org/3.4/library/gzip.html处的文档,示例显示了如何编写使用gzip.open
打开文件的单个数据,以及writelines
来写出单个数据。
我正在使用Python 3.4
答案 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
。