我对python很新,我试图创建一个JSON文件,然后加载然后组织。但我不断收到一个奇怪的错误。
这是我编写文件的代码:
def save(): # save to file
with open(class_name, 'a') as f:
data = [name, score]
json.dump(data, f)
这是我加载文件的代码:
with open(class_name, 'r') as f:
data2 = json.load(f)
这是我组织文件的代码:
with open(class_name, 'r') as f:
data2 = json.load(f)
Alpha = sorted(data, key=str.lower)
print(Alpha)
这是我的错误:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
viewscores()
File "C:\Users\Danny\Desktop\Task123.py", line 60, in viewscores
data2 = json.load(f)
File "C:\Python34\lib\json\__init__.py", line 268, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Python34\lib\json\__init__.py", line 318, in loads
return _default_decoder.decode(s)
File "C:\Python34\lib\json\decoder.py", line 346, in decode
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 13 - line 1 column 153 (char 12 - 152)
答案 0 :(得分:0)
您将数据附加到您的文件中,在该文件中创建多个JSON文档。另一方面,json.load()
命令只能从文件中加载一个 JSON文档,现在抱怨JSON文档后面有更多数据。
调整代码以分别加载这些文档(在每个附加条目后插入换行符,load the JSON documents line by line,或用新的JSON对象替换文件中的所有内容。
使用换行符作为分隔符,然后单独加载所有条目将如下所示:
def save(): # save to file
with open(class_name, 'a') as f:
data = [name, score]
json.dump(data, f)
f.write('\n')
并加载:
with open(class_name, 'r') as f:
scores = []
for line in f:
entry = json.loads(line)
scores.append(entry)
之后,如果您愿意,可以对这些条目进行排序。