读取和写入大型压缩JSON的缺失Python工具。
项目描述
compress_json
读取和写入大型压缩JSON的缺失Python工具。
该库基于compress_pickle库。
如何安装此包?
像往常一样,只需使用pip下载
pip install compress_json
可用的压缩模式
自动检测文件名的压缩模式为 gzip,bz2 和 lzma(或 xz),值得注意的是 zip,这似乎很难集成到JSON管道中。
使用示例
该库极其易于使用
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.dump(D, "filepath.json.gz") # for a gzip file
compress_json.dump(D, "filepath.json.bz") # for a bz2 file
compress_json.dump(D, "filepath.json.lzma") # for a lzma file
compress_json.dump(D, "filepath.json.xz") # for a lzma file
D1 = compress_json.load("filepath.json.gz") # for loading a gzip file
D2 = compress_json.load("filepath.json.bz") # for loading a bz2 file
D3 = compress_json.load("filepath.json.lzma") # for loading a lzma file
D3 = compress_json.load("filepath.json.xz") # for loading a lzma file
如果您必须加载或保存具有自定义扩展名的JSON对象,您可以通过将compression
参数传递给load
和dump
方法来指定压缩模式
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.dump(D, "filepath.custom_extension1", compression="gzip") # for a gzip file
compress_json.dump(D, "filepath.custom_extension2", compression="bz2") # for a bz2 file
compress_json.dump(D, "filepath.custom_extension3", compression="lzma") # for a lzma file
D1 = compress_json.load("filepath.custom_extension1", compression="gzip") # for loading a gzip file
D2 = compress_json.load("filepath.custom_extension2", compression="bz2") # for loading a bz2 file
D3 = compress_json.load("filepath.custom_extension3", compression="lzma") # for loading a lzma file
assert D == D1 == D2 == D3
一些额外功能:本地加载和保存
除了JSON库的常规load
和dump
方法外,该库还提供了local_load
和local_dump
方法,允许您通过使用调用堆栈在调用它们的同一目录中加载和保存文件。
这特别有用,尤其是在加载包内的文件时。
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.local_dump(D, "filepath.json.gz") # for a gzip file
compress_json.local_dump(D, "filepath.json.bz") # for a bz2 file
compress_json.local_dump(D, "filepath.json.lzma") # for a lzma file
D1 = compress_json.local_load("filepath.json.gz") # for loading a gzip file
D2 = compress_json.local_load("filepath.json.bz") # for loading a bz2 file
D3 = compress_json.local_load("filepath.json.lzma") # for loading a lzma file
assert D == D1 == D2 == D3
使用RAM缓存加载
有时您需要多次加载压缩的JSON文件,并且可能希望将此文档放入缓存或类似的东西中。幸运的是,我们已经为此提供了此选项
import compress_json
# The first time you load the file, it will be cached in RAM
D1 = compress_json.load(
"filepath.json.gz",
use_cache=True
)
# The second time you load the file, it will be loaded from the cache
D2 = compress_json.local_load(
"filepath.json.gz",
use_cache=True
)
assert D1 == D2
高级使用
您可以传递参数到选定的压缩模式或JSON库。
通过json_kwargs
参数,您可以选择传递给JSON库方法的任何kwargs,您可以通过运行help(json.dump)
和help(json.load)
(根据您是保存还是加载JSON对象)来获取Python版本的这些kwargs。
同样,使用 compression_kwargs
参数,您可以指定任何需要转发到您打算使用的压缩库的参数,无论该库是 lzma
、gzip
还是 bz2
,具体取决于您安装的版本。
无论您是在转储还是加载压缩的 JSON 对象,都可以通过运行 help(lzma.open)
、help(gzip.open)
或 help(bz2.open)
来获取可以转发给压缩方法的参数列表。
import compress_json
D = {
"A": {
"B": "C"
}
}
compress_json.dump(
D, "filepath.json.gz",
compression_kwargs={
"compresslevel": 9 # The kwargs for gzip
},
json_kwargs={
"indent": 4 # The kwargs for json
}
)
D4 = compress_json.load(
"filepath.json.gz",
compression_kwargs={
"compresslevel": 9 # The kwargs for gzip
},
json_kwargs={} # The kwargs for json
)
assert D == D4
许可证
该库采用 MIT 许可协议发布。
项目详情
关闭
compress_json-1.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0fcc3fb518250546e747af4b00cca488c62c60cee84a79f33374ff0b77adec43 |
|
MD5 | c39cced3867fc68affe1313e29157b46 |
|
BLAKE2b-256 | e4d9da3970cc4d974e91bc90dfa83c2c013206b4dec5da8e68b6d1497870a5bf |