小能豆

将字节数组存储在文件中的情况下对字节数组使用 zip 压缩?

python

我想对字节数组(编码字符串 + SHA-1 结果)使用zip 压缩,并从中得到一个字节数组,这样我就可以将它用于进一步加密,因为我正在实施 PGP。有没有办法在不将结果存储到文件中的情况下执行此操作?


阅读 97

收藏
2023-05-24

共1个答案

小能豆

您可以使用 Python 中 io 模块中的 io.BytesIO 类来处理内存中的字节流,而不是将 zip 结果存储到文件中。这允许您对字节数组执行 zip 压缩并将压缩数据作为字节数组获取。

以下是如何实现此目标的示例:

import zipfile
import io
# Create an in-memory byte stream
buffer = io.BytesIO()
# Create a ZipFile object with the in-memory byte stream
with zipfile.ZipFile(buffer, 'w', zipfile.ZIP_DEFLATED) as zipf:
    # Add data to the zip
    zipf.writestr('data.txt', data_bytes)
# Get the compressed data as a byte array
compressed_data = buffer.getvalue()
# Now you can use the compressed_data byte array for further encryption 
or other purposes

您可以在官方 Python 文档中找到有关 zipfile 模块及其功能的更多信息:https ://docs.python.org/3/library/zipfile.html

2023-05-24