반응형
python으로 json 파일을 업데이트하는 방법
기존 Json 파일을 업데이트하려고 하는데, 어떤 이유로 인해 요청된 값이 변경되지 않고 전체 값 집합(새 값 포함)이 원본 파일에 추가되고 있습니다.
jsonFile = open("replayScript.json", "r+")
data = json.load(jsonFile)
tmp = data["location"]
data["location"] = "NewPath"
jsonFile.write(json.dumps(data))
결과는 다음과 같습니다.필수:
{
"location": "NewPath",
"Id": "0",
"resultDir": "",
"resultFile": "",
"mode": "replay",
"className": "",
"method": "METHOD"
}
실제:
{
"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": ""
}
여기서의 문제는, 커서가 파일의 끝에 있도록, 파일을 열어 그 내용을 읽었다는 것입니다.같은 파일 핸들에 쓰는 것은 기본적으로 파일에 추가하는 것입니다.
가장 쉬운 해결책은 파일을 읽은 후 닫은 후 다시 열어 쓰는 것입니다.
with open("replayScript.json", "r") as jsonFile:
data = json.load(jsonFile)
data["location"] = "NewPath"
with open("replayScript.json", "w") as jsonFile:
json.dump(data, jsonFile)
또는 를 사용하여 커서를 파일의 선두로 되돌린 후 쓰기를 시작하여 새로운 데이터가 이전 데이터보다 작은 경우에 대처할 수 있습니다.
with open("replayScript.json", "r+") as jsonFile:
data = json.load(jsonFile)
data["location"] = "NewPath"
jsonFile.seek(0) # rewind
json.dump(data, jsonFile)
jsonFile.truncate()
def updateJsonFile():
jsonFile = open("replayScript.json", "r") # Open the JSON file for reading
data = json.load(jsonFile) # Read the JSON into the buffer
jsonFile.close() # Close the JSON file
## Working with buffered content
tmp = data["location"]
data["location"] = path
data["mode"] = "replay"
## Save our changes to JSON file
jsonFile = open("replayScript.json", "w+")
jsonFile.write(json.dumps(data))
jsonFile.close()
def updateJsonFile():
with open(os.path.join(src, "replayScript.json"), "r+") as jsonFile:
data = json.load(jsonFile)
jsonFile.truncate(0)
jsonFile.seek(0)
data["src"] = "NewPath"
json.dump(data, jsonFile, indent=4)
jsonFile.close()
def writeConfig(key, value):
with open('config.json') as f:
data = json.load(f)
# Check if key is in file
if key in data:
# Delete Key
del data[key]
cacheDict = dict(data)
# Update Cached Dict
cacheDict.update({key:value})
with open(dir_path + 'config.json', 'w') as f:
# Dump cached dict to json file
json.dump(cacheDict, f, indent=4)
언급URL : https://stackoverflow.com/questions/13949637/how-to-update-json-file-with-python
반응형
'source' 카테고리의 다른 글
ExtJS 철학이란?한 페이지 어플리케이션? (0) | 2023.03.13 |
---|---|
Python에서 Oracle에 액세스하려면 어떻게 해야 합니까? (0) | 2023.03.13 |
Spring Boot + Gradle : 실행 가능한 jar 빌드 방법 (0) | 2023.03.13 |
Angularjs:컨트롤러에서 요소 가져오기 (0) | 2023.03.13 |
console.log 대신 angular의 $log를 사용하는 이유는 무엇입니까? (0) | 2023.03.13 |