3

json ファイルから値を取得しようとしていますが、取得しているエラーはTypeError: expected string or buffer. ファイルを正しく解析しています。さらに、json ファイル形式も正しいと思います。どこが間違っているのですか?

両方のファイルは同じディレクトリにあります。

Main_file.py

import json

json_data = open('meters_parameters.json')

data = json.loads(json_data)  // TypeError: expected string or buffer
print data
json_data.close()

meter_parameters.json

{
    "cilantro" : [{
        "cem_093":[{
            "kwh":{"function":"3","address":"286","length":"2"},
            "serial_number":{"function":"3","address":"298","length":"2"},
            "slave_id":{"function":"3","address":"15","length":"2"}
        }]
    }],
    "elmeasure" : [{
        "lg1119_d":[{
            "kwh":{"function":"3","address":"286","length":"2"},
            "serial_number":{"function":"3","address":"298","length":"2"},
            "slave_id":{"function":"3","address":"15","length":"2"}
        }]
    }]
}
4

2 に答える 2

11

loadsファイル ハンドルではなく、文字列が必要です。必要なものjson.load:

import json

with open('meters_parameters.json') as f:
    data = json.load(f)
print data
于 2013-09-19T04:44:18.510 に答える
1

ファイル内のすべてをロードしたいときに、ファイルオブジェクトをロードしようとしています。行う:

data = json.loads(json_data.read())

.read()ファイルからすべてを取得し、文字列として返します。


ステートメントは、withここでもはるかに Pythonic です。

with open('meters_parameters.json') as myfile:
    data = json.loads(myfile.read())
于 2013-09-19T04:43:52.640 に答える