python 使用 gzip 或 zlib 压缩多个数据
python compressing multiple data using gzip or zlib
假设我有多个数据:比如 3 python array
s(或 numpy array
s)和 2 个字符串列表。
如何将压缩二进制格式的每个数据存储在同一个 zip 文件中?
我查看了 https://docs.python.org/3.4/library/gzip.html 上的文档,示例仅展示了如何编写使用 gzip.open
打开文件并使用 writelines
写出单个数据的单个数据数据。
我正在使用 Python 3.4
要将多个文件放入 gzip 文件中,请使用 tarfile.open
with a mode of w:gz
. Then you can use the addfile
方法将序列化对象放入其中(使用 StringIO
作为 fileobj)。
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)
如果你只想将一些numpy数组放入一个压缩文件中,你可以只使用numpy.savez_compressed
.
假设我有多个数据:比如 3 python array
s(或 numpy array
s)和 2 个字符串列表。
如何将压缩二进制格式的每个数据存储在同一个 zip 文件中?
我查看了 https://docs.python.org/3.4/library/gzip.html 上的文档,示例仅展示了如何编写使用 gzip.open
打开文件并使用 writelines
写出单个数据的单个数据数据。
我正在使用 Python 3.4
要将多个文件放入 gzip 文件中,请使用 tarfile.open
with a mode of w:gz
. Then you can use the addfile
方法将序列化对象放入其中(使用 StringIO
作为 fileobj)。
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)
如果你只想将一些numpy数组放入一个压缩文件中,你可以只使用numpy.savez_compressed
.