[英]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.