我正在编写一个用于JSON文件处理的Python脚本。它基本上分为三个过程:加载、编码和打印。虽然我已经使用tqdm轻松地创建了用于编码和打印的进度条,但我不知道如何为load创建进度条。
我彻底阅读了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()方法的进度条。
发布于 2019-06-17 22:22:23
明白了!
在json.load()方法中使用object_hook参数。我已经尝试将其与一个简单的计数函数一起使用,该函数返回的值比源文件中的行数大三倍,因此我认为它是错误的。在了解了我的函数为json.load返回的每个字典执行之后,我意识到我的文件中每行有三个字典,所以我的函数是OK的,我只需要在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
https://stackoverflow.com/questions/56605238
复制相似问题