Ich versuche, vorhandene Json-Datei zu aktualisieren, aber aus irgendeinem Grund wird der angeforderte Wert nicht geändert, aber die gesamte Gruppe von Werten (mit dem neuen Wert) wird an das Original angefügt DateiWie update Json-Datei mit Python
jsonFile = open("replayScript.json", "r+")
data = json.load(jsonFile)
tmp = data["location"]
data["location"] = "NewPath"
jsonFile.write(json.dumps(data))
und das Ergebnis ist: erforderlich:
{
"location": "NewPath",
"Id": "0",
"resultDir": "",
"resultFile": "",
"mode": "replay",
"className": "",
"method": "METHOD"
}
Aktuell:
{
"location": "/home/karim/storm/project/storm/devqa/default.xml",
"Id": "0",
"resultDir": "",
"resultFile": "",
"mode": "replay",
"className": "",
"method": "METHOD"
}
{
"resultDir": "",
"location": "pathaaaaaaaaaaaaaaaaaaaaaaaaa",
"method": "METHOD",
"className": "",
"mode": "replay",
"Id": "0",
"resultFile": ""
}
Vielen Dank für die Verwendung von 'seek()' und 'truncate()'. Ich würde diese Antwort jedoch verbessern, indem ich 'jsonFile.write (json.dumps (Daten))' in 'jsonFile.dump (Daten, f)' ändere; mehr pythonisch. – BoltzmannBrain