JSON은 경량 데이터 교환 형식으로, Python에서는 json 모듈을 사용하여 손쉽게 처리할 수 있습니다. 이 글에서는 Python을 사용하여 JSON 파일을 읽고, 특정 key의 값을 변경한 후 다시 파일에 저장하는 방법을 설명합니다.
1. JSON 파일 읽기
먼저, JSON 파일을 읽어 Python의 딕셔너리로 변환하는 방법을 알아봅니다. json 모듈의 load() 함수를 사용하여 파일에서 JSON 데이터를 읽을 수 있습니다.
import json# JSON 파일 경로file_path ='data.json'# 파일 읽기withopen(file_path, 'r', encoding='utf-8') asfile: data = json.load(file) # JSON 데이터를 Python 딕셔너리로 변환
2. 특정 key의 값 변경하기
JSON 데이터를 Python의 딕셔너리로 읽어들였으므로, 딕셔너리처럼 값을 변경할 수 있습니다. 예를 들어, name이라는 key의 값을 변경해보겠습니다.
# 특정 key 값 변경하기data['name'] ='새로운 이름'
3. 변경된 데이터를 JSON 파일에 저장하기
수정된 데이터를 다시 JSON 파일로 저장하려면, json 모듈의 dump() 함수를 사용합니다. 이때 indent 매개변수를 사용하면 저장되는 JSON 파일이 보기 좋게 들여쓰기됩니다.
# 변경된 데이터를 다시 JSON 파일에 저장withopen(file_path, 'w', encoding='utf-8') asfile: json.dump(data, file, ensure_ascii=False, indent=4)
전체 코드
위의 내용을 한 번에 담은 전체 코드는 다음과 같습니다:
import json# JSON 파일 경로file_path ='data.json'# 1. JSON 파일 읽기withopen(file_path, 'r', encoding='utf-8') asfile: data = json.load(file) # JSON 데이터를 Python 딕셔너리로 변환# 2. 특정 key의 값 변경하기data['name'] ='새로운 이름'# 3. 변경된 데이터를 다시 JSON 파일에 저장withopen(file_path, 'w', encoding='utf-8') asfile: json.dump(data, file, ensure_ascii=False, indent=4)
주요 포인트
json.load(): JSON 파일을 읽어 Python 딕셔너리로 변환.
json.dump(): Python 딕셔너리를 JSON 형식으로 파일에 저장.
ensure_ascii=False: 한글과 같은 비ASCII 문자들이 유니코드로 인코딩되지 않게 설정.
indent=4: 들여쓰기 설정으로, JSON 파일을 더 읽기 좋게 만듦.
추가 기능: 파일 존재 여부 확인
만약 파일이 존재하는지 확인하고, 존재하지 않는다면 기본값을 생성하는 로직을 추가할 수도 있습니다.
import osimport jsonfile_path ='data.json'# 파일 존재 여부 확인ifnot os.path.exists(file_path):# 파일이 없으면 기본 데이터를 생성 data = {'name': '기본 이름'}else:# 파일이 있으면 파일을 읽음withopen(file_path, 'r', encoding='utf-8') asfile: data = json.load(file)# 값 변경data['name'] ='새로운 이름'# 변경된 데이터를 다시 저장withopen(file_path, 'w', encoding='utf-8') asfile: json.dump(data, file, ensure_ascii=False, indent=4)
이 방식으로 JSON 파일을 안전하게 처리하고, 원하는 값을 수정한 후 저장할 수 있습니다.