Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将文件作为JSON加载?_Python_Json_Dictionary_Load - Fatal编程技术网

在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

我对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)
这是我加载文件的代码:

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:我已经在答案中添加了示例代码:-现在没关系了,都修好了