[英]Update specific value in JSON file with python
我从 python 脚本更新我的 JSON 文件时遇到问题。 我的 JSON 文件”:
{"domains":
[
{"name": "example1.com", "type": "mail", "category": "good", "count": 0},
{"name": "example1.com", "type": "mail", "category": "bad"},
{"name": "exampless.com", "type": "mail", "category": "good", "count": 13}
]
}
我尝试更新“计数”,但仅在“名称”特定的地方
我试试这段代码:
def redJSONlist(filename)
with open(filename) as f:
data = json.load(f)
return data
def updateJSONdata(data, filename)
filename.seek(0)
json.dump(data, filename)
filename.truncate()
l = redJSONlist("data.json")
for i in l['domains']:
if(i['name'] == "exampless.com"):
ile = i['count']
i['count'] = ile + 1
updateJSONdata(l, "data.json")
我收到错误: AttributeError: 'str' object has no attribute 'seek'
.seek
和.write
是文件 object 的方法,但您尝试在字符串类型上调用它们,这会导致错误。
你想通过.seek(0)?
- 如果是在第一个字节设置文件读取,则不需要,python 在打开时自动执行
您可能正在寻找这样的东西:
data = {"abc" : "efg"}
filename = "data.json"
with open(filename) as file:
file.write(data)
print(type(file))
print(type(filename))
打印件将帮助您了解文件和文件名类型之间的区别
您的代码有几个问题:
您缺少冒号:
在 function 定义的末尾: def updateJSONdata(data, filename)
filename
变量是string
类型,但您尝试对其调用.seek(0)
,这是一种文件方法。 您在updateJSONdata
function 中实际需要做的是打开具有给定文件名的filename
,运行json.dump
并关闭它。 以下代码段应该有效:
def updateJSONdata(data, filename):
with open(filename, "w") as file: # the "w" option opens the file in write mode
json.dump(data, file)
请注意, with
块将为您执行资源清理(文件关闭)。
我在 Python 文件处理中包含一个资源供您进一步参考: Python 文件处理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.