如何将tqdm用于JSON文件加载进度栏?

时间:2019-06-14 21:18:56

标签: python json tqdm

我正在编写用于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()方法的进度条。

1 个答案:

答案 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