gpt4 book ai didi

python - 包含python3中JSON数据的不同压缩方式

转载 作者:行者123 更新时间:2023-11-28 18:22:19 32 4
gpt4 key购买 nike

所以,我想使用不同的压缩器压缩我的 JSON 数据。我用它来压缩 JSON。

import gzip
import JSON

with gzip.GzipFile('2.json', 'r') as isfile:
for line in isfile:
obj = json.loads(line)

这会引发错误。

raise OSError('Not a gzipped file (%r)' % magic)

OSError: Not a gzipped file (b'[\n')

我也试过使用直接压缩。

zlib_data= zlib.compress(data)

这会引发错误。

return lz4.block.compress(*args, **kwargs)

TypeError: a bytes-like object is required, not 'list'

所以,基本上我想使用所有方法压缩 JSON,并计算不同方法压缩所花费的时间。

最佳答案

关于python2.7

看来是你数据类型的问题

要压缩的数据应该是'str'类型

import gzip
import json
import lz4
import time

with gzip.GzipFile('data.gz','w') as fid_gz:
with open('data.json','r') as fid_json:
# get json as type dict
json_dict = json.load(fid_json)
# convert dict to str
json_str = str(json_dict)
# write string
fid_gz.write(json_str)

# check well maded
with gzip.GzipFile('data.gz','r') as fid_gz :
print(fid_gz.read())

即使gzip压缩

gzip.zlib.compress(json_str,9)

即使lz4压缩

lz4.block.compress(json_str)

时间检查将是

# set start time
st = time.time()
# calculate elasped time
print(time.time() - st)

在python3.5上

python2.7 和 python 3 的区别在于要压缩的数据类型

要压缩的数据应该是通过 bytes() 的“字节”类型

制作 .gz 文件时

with gzip.GzipFile('data.gz','w') as fid_gz:
with open('data.json','r') as fid_json:
json_dict = json.load(fid_json)
json_str = str(json_dict)
# bytes(string, encoding)
json_bytes = bytes(json_str,'utf8')
fid_gz.write(json_bytes)

或者只是用 gzip.compress(data, compresslevel=9) 压缩

# 'data' takes bytes
gzip.compress(json_bytes)

或者用 zlib.compress(bytes, level=-1,/) 压缩

gzip.zlib.compress(json_bytes,9)

或者用 lz4.bloc.compress(source, compression=0) 压缩

# 'source' takes both 'str' and 'byte'
lz4.block.compress(json_str)
lz4.block.compress(json_bytes)

测量时间随心所欲。

干杯

关于python - 包含python3中JSON数据的不同压缩方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44306084/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com