我正在使用以下代码(Python 2.7)将其上传到Google Storage:
import datalab.storage as storage
storage.Bucket('MyBucket').item(path_raw).write_to(json.dumps(data), 'application/json')
这很好。但是,我想以压缩方式上传文件,以便占用更少的空间。 json.dumps()
没有压缩选项,只能使用类似的东西:
with gzip.GzipFile('filename.json', 'w') as outfile:
outfile.write(json.dumps(data, outfile, sort_keys=True))
无法解决我的问题,因为它需要将文件保存在本地,然后在我的代码直接在Google存储设备上创建文件时上传。
我该如何解决?
答案 0 :(得分:1)
您可以写入内存中的缓冲区而不是磁盘上的文件:
from io import BytesIO
import gzip
stream = BytesIO()
with gzip.GzipFile(fileobj=stream, mode='w') as gz:
gz.write("some string")
# Reset stream
stream.seek(0)
print(stream.read())
如果您可以直接使用zlib
,那么您也可以使用:
import zlib
zlib.compress(data)
答案 1 :(得分:0)
然后您可能会寻找gzip.compress。因此,您可以将其放在您的数据库中:
gzip.compress(bytes(json.dumps(data), encoding="utf-8"))
(这仅适用于Python3。)