python - 使用 json.load() 加载 JSON 文件时出现 Python 解释器错误
问题描述
这是我用于解析 JSON 文件的 python 代码。
import os
import argparse
import json
import datetime
ResultsJson = "sample.json"
try:
with open(ResultsJson, 'r') as j:
jsonbuffer = json.load(j)
result_data = json.loads(jsonbuffer)
print("Just after loading json")
except Exception as e:
print(e, exc_info=True)
我还附上了我在这里使用的 JSON 文件“sample.json”。 示例.json
{
"idx": 1,
"timestamp": 1562781093.1182132,
"machine_id": "tool_2",
"part_id": "af71ce94-e9b2-47c0-ab47-a82600616b6d",
"image_id": "14cfb9e9-1f38-4126-821b-284d7584b739",
"cam_sn": "camera-serial-number",
"defects": [
{
"type": 0,
"tl": [169, 776],
"br": [207, 799]
},
{
"type": 0,
"tl": [404, 224],
"br": [475, 228]
},
{
"type": 1,
"tl": [81, 765],
"br": [130, 782]
}
],
"display_info": [
{
"info": "DEFECT DETECTED",
"priority": 2
}
]
}
不知道我在这里错过了什么。我对 Python 很陌生(来自 C++ 背景)。如果我错过了一些基本的东西,请对我放轻松。
解决方案
你不需要这一行:
result_data = json.loads(jsonbuffer)
...因为jsonbuffer
是 的结果json.load
,所以已经是解析JSON文件的结果了。在你的情况下,它是一个 Python 字典,但json.loads
需要一个字符串,所以你会得到一个错误。
此外,正如第二条错误消息所说,exc_info
它不是print
函数的有效关键字参数。如果您想打印异常,只需执行print(e)
.
推荐阅读
- vue.js - Vue 附加元素有一些问题
- ios - 从表格单元格附件的 UINavigation 设置中显示视图控制器时,我如何知道它来自哪个表格单元格?
- javascript - 输入占位符的自定义下拉 z-index 问题
- reactjs - Expo Developer Tools 与 Expo CLI 断开连接。使用 expo start 命令再次启动 CLI
- r - 如何在没有空格或破折号的字母字符串中重复每个字母的字符串连接?
- java - 下载的 Eclipse 包中没有服务器选项
- clojure - 从更长的序列中获取部分序列clojure
- c - 在 Linux 中通过 IPC 使用共享内存创建的缓冲区
- angular - Angular - 自动运行命令以添加外部包
- fish - 不,我无法将我的默认外壳更改为鱼外壳