![](/img/trans.png)
[英]Concatenate multiple files into a single file object without creating a new file
[英]Update same object in a JSON file without creating a new object inside it
我有一個空的 json 文件,我正在嘗試根據用戶輸入進行更新。 json 文件中最初沒有內容。
我創建了一個端點,通過 Flask 應用程序以下列格式從用戶那里獲取輸入:
{
"register_address_lower":40201,
"register_address_upper":40202,
"unit":"gal/min"
}
因此,在第一次獲得輸入后,json 文件的內容如下所示:
{"40201": "gal/min", "40202": "gal/min"}
現在,在獲得新的用戶輸入后,我只想在 json 文件中更新相同的 object,而不在其中創建新的 object。 假設新的輸入是:
{
"register_address_lower":40801,
"register_address_upper":40803,
"unit":"gal/min"
}
我的 json 文件中的內容現在應該是:-
{"40201": "gal/min", "40202": "gal/min", "40801": "gal/min", "40802": "gal/min", "40803": "gal/min"}
這是我正在使用的代碼塊:
@app.route("/config",methods=["Post"])
def update_json():
response = request.json
with open("config.json", 'r+') as file:
json_file = json.load(file)
for res_address in range(response['register_address_lower'],response['register_address_upper']+1):
new_reg = {str(res_address):response['unit']}
json_file.update(new_reg)
#json_file[res_address]=response['unit']
json.dump(json_file, file)
通過上面給出的例子,我得到的結果是: -
{"40201": "gal/min", "40202": "gal/min"}{"40201": "gal/min",
"40202": "gal/min", "40801": "gal/min", "40802": "gal/min", "40803": "gal/min"}
您正在打開的文件處於“r+”模式,因此您正在從中讀取,但是當您轉儲到它時,您會在已經存在的內容之后開始。 據我了解,文件中的第二個 object 是預期的 output。 您需要with
您當前擁有的文件覆蓋外部的文件。
以下是未經測試的重寫:
@app.route("/config",methods=["Post"])
def update_json():
response = request.json
with open("config.json", 'r+') as file:
json_file = json.load(file)
for res_address in range(response['register_address_lower'],response['register_address_upper']+1):
new_reg = {str(res_address):response['unit']}
json_file.update(new_reg)
#json_file[res_address]=response['unit']
with open("config.json", 'w') as file:
json.dump(json_file, file)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.