在加载JSON文件时,我包含try... except...
。我的代码是:
with open(file,'r',encoding='utf-8') as r:
try:
j = json.load(r)
except:
j = json.loads('['+r.read().replace('}{','},{')+']')[0]
print(j)
但是,j
侧的except
永远不会通读。如果我分别运行except
代码,则可以毫无问题地打印j。
更新:
对于JSON无法运行json.load(r)
,它将给出错误消息Extra data: line 1 column 106362 (char 106361)
。在这种情况下,我必须通过将JSON传递到except
部分来稍微“修改”文件。但是,print(j)
返回一个空列表[]
而不是真实的JSON。
我是Python的新手,只是想知道是否有人对我应该怎么做才能使try...except...
正常工作有任何想法?
非常感谢!
答案 0 :(得分:1)
try语句j = json.load(r)
隐式读取文件,将文件的光标移到末尾。这意味着再次读取文件会输出一个空字符串,因为光标已经在文件末尾。
因此,解决方法是使用seek(0)
重设光标:
with open(file,'r',encoding='utf-8') as r:
try:
j = json.load(r)
except:
r.seek(0)
j = json.loads('['+r.read().replace('}{','},{')+']')[0]
print(j)
这也花费了我一些调试工作,但是在任何IDE中使用适当的调试工具,当您输入except语句时,您都可以看到文件r为空。