NameError加载json文件

时间:2018-08-19 01:07:15

标签: python

我想从json文件加载数据

viewModel

它报告错误:

In [6]: import json
In [7]: position_links = json.loads(position_links.json)

我尝试了

NameError: name 'position_links' is not defined

我该如何解决问题?

1 个答案:

答案 0 :(得分:2)

如果有一个名为position_links.json的文件,则必须(a)使用文件名作为字符串,而不是裸变量,并且(b)使用open该文件,以便您可以读取它:

with open('position_links.json') as file:
    position_links = json.load(file)

如果您想了解代码有什么问题:

position_links.json,不带引号,只是要求变量json中具有任何值的position_links属性。但是该变量中没有 值。您尚未创建任何名为position_links的东西。因此,NameError。如果要使用字符串作为文件名,则该字符串必须用引号引起来。

如果仅为[]创建一个值position_links,它将仍然无法使用。现在position_links.json要求提供值json的{​​{1}}属性,并且列表没有[]属性。因此,json

如果仅将其用引号引起来并将其传递给AttributeError,它仍然将不起作用。 json.loads函数使用JSON文本,而不是文件名,并且字符串loads不是有效的JSON文本。因此,您要做的就是将问题从'position_links.json'更改为NameError。要加载文件,您需要JSONDecodeError,而不是load

如果仅将其放在引号中并将其传递给loads,它仍然将不起作用。 json.load函数接受一个文件对象,而不是文件名,而load不是文件对象-它没有像'position_links.json'readline这样的方法。 ,您所要做的就是将问题更改为read,以寻找其中一种方法。

如果将其用引号引起来并传递给AttributeError,则然后您将拥有一个文件对象,并且可以将该文件对象传递给open,现在所有内容会起作用。