我正在尝试读取一个JSON文件,该文件仅包含一个具有一个属性(即索引)的对象。那是成功的,但是当我尝试重写为相同的JSON文件时,出现错误。 代码如下:
import sys
import json
import os
import os.path
import json
try:
json_path = path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'indexes', 'table_index.json')
with open(json_path) as json_file:
data = json.load(json_file)
index1 = 4
data["index"] = index1
print(type(data)) #Prints 'dict'
with open((json_path), 'wb') as f:
json.dump(data, f)
except Exception as e:
print(e)
我得到的错误是
'str' object has no attribute 'dump'
我基本上想要实现的是读取JSON,将index属性更改为不同的值,最后将其重写为相同的JSON文件。 写入前打印data [“ index”]的正确值为4。
答案 0 :(得分:1)
如注释中所述,最可能的原因是您在代码中的某个位置定义了一个名为json
的变量,该变量遮盖了模块名称。例如,
import json
json_string = '{"something": 4}'
print(json.dumps(json_string)) # prints "{\"something\": 4}"
但是,如果您要进行这样的分配:
json = '{"something_else": 4}'
然后调用与上面相同的命令
print(json.dumps(json_string))
它将提高
AttributeError:'str'对象没有属性'dumps'
因此,您要做的就是检查代码是否进行了这样的分配,进行更改并应该解决问题。