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