在事件上,我将事件附加到事件txt文件(重要的是我附加到文本文件而不是保留在内存中)之后我需要将10个事件累积到事件服务器 我的示例事件是:
data = {
'node': os.popen('hostname').read(),
'details': details,
'time': calendar.timegm(time.gmtime())
}
我能够追加,因此出现
{
"node": "macbook.local\n",
"details": "Fire",
"time": 1443734264
}{
"node": "macbook.local\n",
"details": "Fire",
"time": 1443734272
}
我无法读回来 尝试过:
with open(tmp_file) as source:
json_source = source.read()
data = json.loads('[{}]'.format(json_source))
但抛出异常。
可能我需要像对待列表那样对待它,这是唯一的方法吗?
- python newbie
答案 0 :(得分:0)
首先,当您附加数据时,请确保在其末尾添加逗号:
{
"node": "macbook.local\n",
"details": "Fire",
"time": 1443734264
},{
"node": "macbook.local\n",
"details": "Fire",
"time": 1443734272
},
其次,当你重新格式化它时,只使用列表括号([]
),而不是字典括号({}
),如下所示:
data = json.loads('[]'.format(json_source))
答案 1 :(得分:0)
您的问题是您没有将json格式化为适当的API。试试这个:
a='{"someid":{"node": "macbook.local","details": "Fire", "time": "1443734264"},"someid2":{"node": "macbook.local", "details": "Fire", "time": "1443734272"}}'
json.loads(a)
{'someid': {'details': 'Fire', 'node': 'macbook.local', 'time': '1443734264'}, 'someid2': {'details': 'Fire', 'node': 'macbook.local', 'time': '1443734272'}}