在python中将文件作为JSON加载?

时间:2015-05-14 12:31:25

标签: 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)

这是我组织文件的代码:

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)

1 个答案:

答案 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)

之后,如果您愿意,可以对这些条目进行排序。