4

我有以下名为 json.txt 的 json 文件,其中包含以下数据,

{"id":99903727,"nickname":"TEST_MLA_OFF","registration_date":"2010-12-03T14:19:33.000-04:00","country_id":"AR","user_type":"normal","logo":null,"points":0,"site_id":"MLA","permalink":"http://perfil.mercadolibre.com.ar/TEST_MLA_OFF","seller_reputation":{"level_id":null,"power_seller_status":null,"transactions":{"period":"12 months","total":25,"completed":25,"canceled":0,"ratings":{"positive":0,"negative":0,"neutral":1}}},"status":{"site_status":"deactive"}}

我使用 wget 获得了它。我尝试使用以下 python 代码用 python 加载该 json 数据,

json_data = json.load('json.txt')
data = json.load(json_data)
json_data.close()

print data

但这会引发以下错误,

Traceback (most recent call last):
  File "json-example.py", line 28, in <module>
    main()
  File "json-example.py", line 21, in main
    json_data = json.load('json.txt')
  File "/opt/sage-4.6.2-linux-64bit-ubuntu_8.04.4_lts-x86_64-Linux/local/lib/python/json/__init__.py", line 264, in load
    return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'

我找不到谷歌搜索错误的原因是什么。

最好的祝福。

4

2 回答 2

15

更好的做法是使用with语句。

with open('json.txt', 'r') as json_file:
    data = json.load(json_file)

这可确保文件正确关闭,而无需您担心。

于 2012-04-23T23:33:39.440 回答
8

您需要提供json.load一个文件流对象:

json_file = open('json.txt')
data = json.load(json_file)
json_file.close()

print data
于 2012-04-23T21:45:34.037 回答