繁体   English   中英

Python 在读取 JSON 文件时处理异常

[英]Python handling exceptions while reading JSON files

我包括try... except...加载我的 JSON 文件时。 我的代码是:

with open(file,'r',encoding='utf-8') as r:
   try:
     j = json.load(r)
   except:
     j = json.loads('['+r.read().replace('}{','},{')+']')[0]

   print(j)

然而, jexcept一边永远不会被通读。 如果我单独运行except代码,我可以毫无问题地打印j。

更新

对于 JSON 无法运行json.load(r) ,它会给出错误消息Extra data: line 1 column 106362 (char 106361) 在这种情况下,我必须通过将 JSON 传递给except部分来稍微“修改”文件。 但是, print(j)返回一个空列表[]而不是真正的 JSON。

我是 Python 的新手,只是想知道是否有人知道我应该怎么做才能try...except...正常工作?

非常感谢!

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 为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM