在python中将文件作为JSON加载?
我对python很陌生,我试图创建一个JSON文件,然后加载并组织它。但我总是犯一个奇怪的错误 这是我编写文件的代码:在python中将文件作为JSON加载?,python,json,dictionary,load,Python,Json,Dictionary,Load,我对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) wi
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)
这是我加载文件的代码:
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)
这是我组织文件的代码:
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)
您正在向文件中添加数据,并在该文件中创建多个JSON文档。另一方面,json.load命令只能从一个文件中加载一个json文档,并且现在抱怨在json文档之后有更多数据
或者调整代码以分别加载这些文档,在附加的每个条目后插入换行符,或者用新的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)
之后,如果您愿意,可以对这些条目进行排序。以“w”模式而不是“a”模式打开文件。另外,Alpha应该等于sorteddata2…,而不是sorteddata…我应该在哪里按行加载JSON文档?@DannyAtcheson:现在在哪里使用JSON.loadf。如果你想有一个完整的条目列表进行排序,你可以加载每一行,将其附加到一个列表对象,然后进行排序。对不起,noob atm,但我该怎么做?@DannyAtcheson:我已经在答案中添加了示例代码:-现在没关系了,都修好了