现有文件上的 Python 内存中 GZIP

问题描述 投票:0回答:1

我遇到的情况是我有一个现有文件。我想使用 gzip 压缩该文件并获取该文件的 base64 编码,并使用该字符串进行后续操作,包括作为 API 调用中数据的一部分发送。

我有以下代码,运行良好:

import base64
import gzip


base64_string_to_use_later = None
with open('C:\\test.json', 'rb') as orig_file:
   with gzip.open('C:\\test.json.gz', 'wb') as zipped_file:
        zipped_file.writelines(orig_file)
        
with gzip.open('C:\\test.json.gz', 'rb') as zipped_file:
        base64_string_to_use_later = base64.b64encode(zipped_file.read())
    

此代码将获取现有文件,创建压缩版本并将其写回文件系统。第二个块获取压缩文件,打开它并获取 Base 64 编码版本。

有没有办法让这个更优雅地压缩内存中的文件并检索内存中的base64编码字符串?

python file encoding io gzip
1个回答
0
投票

使用

gzip.compress()
压缩内存中的数据,而不是写入文件。

import base64
import gzip

with open('C:\\test.json', 'rb') as orig_file:
    base64_string_to_use_later = base64.b64encode(gzip.compress(orig_file.read()))
© www.soinside.com 2019 - 2024. All rights reserved.