我正在编写用于JSON文件处理的Python脚本。它基本上分为三个过程:加载,编码和打印。虽然我已经轻松地创建了用于使用tqdm进行编码和打印的进度条,但是我仍然不知道如何进行加载。
我已经彻底阅读了tqdm文档,甚至在这里都进行过搜索,但是没有任何线索
import json
from tqdm import tqdm, trange
from iso3166 import countries
geo_json_events_path = r'/cygdrive/c/elastic/gtd.geojson'
with open(geo_json_events_path) as f:
data = json.load(f)
我希望显示json.load()
方法的进度条。
答案 0 :(得分:0)
知道了!
在object_hook
方法中使用json.load()
参数。我已经尝试将其与简单的计数函数一起使用,该函数返回的值比源文件中的行数大三倍,因此我认为这是错误的。明白我的函数是针对json.load
返回的每个字典执行的之后,我意识到我的文件中每行有三个字典,所以我的函数还可以,我只需要在json数据中找到正确的嵌套级别即可所需的迭代。结果就是这样:
from tqdm import tqdm
import json
def hook(obj):
value = obj.get("features")
if value:
pbar = tqdm(value)
for item in pbar:
pass
pbar.set_description("Loading")
return obj
f = open('/cygdrive/c/elastic/gtd_tst.geojson')
docs = json.load(f, object_hook=hook)
for doc in docs:
print(doc)
这篇文章中的第一个答案对找到解决方案很有帮助:Python decode nested JSON in JSON