JSON 파일에서 특정 key의 값 변경 후 저장하는 방법

JSON 파일에서 특정 key의 값 변경 후 저장하는 방법

Python
JSON 파일에서 특정 key의 값 변경 후 저장하는 방법
Author

gabriel yang

Published

October 14, 2024


JSON 파일에서 특정 key의 값 변경 후 저장하는 방법

JSON은 경량 데이터 교환 형식으로, Python에서는 json 모듈을 사용하여 손쉽게 처리할 수 있습니다. 이 글에서는 Python을 사용하여 JSON 파일을 읽고, 특정 key의 값을 변경한 후 다시 파일에 저장하는 방법을 설명합니다.

1. JSON 파일 읽기

먼저, JSON 파일을 읽어 Python의 딕셔너리로 변환하는 방법을 알아봅니다. json 모듈의 load() 함수를 사용하여 파일에서 JSON 데이터를 읽을 수 있습니다.

import json

# JSON 파일 경로
file_path = 'data.json'

# 파일 읽기
with open(file_path, 'r', encoding='utf-8') as file:
    data = json.load(file)  # JSON 데이터를 Python 딕셔너리로 변환

2. 특정 key의 값 변경하기

JSON 데이터를 Python의 딕셔너리로 읽어들였으므로, 딕셔너리처럼 값을 변경할 수 있습니다. 예를 들어, name이라는 key의 값을 변경해보겠습니다.

# 특정 key 값 변경하기
data['name'] = '새로운 이름'

3. 변경된 데이터를 JSON 파일에 저장하기

수정된 데이터를 다시 JSON 파일로 저장하려면, json 모듈의 dump() 함수를 사용합니다. 이때 indent 매개변수를 사용하면 저장되는 JSON 파일이 보기 좋게 들여쓰기됩니다.

# 변경된 데이터를 다시 JSON 파일에 저장
with open(file_path, 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

전체 코드

위의 내용을 한 번에 담은 전체 코드는 다음과 같습니다:

import json

# JSON 파일 경로
file_path = 'data.json'

# 1. JSON 파일 읽기
with open(file_path, 'r', encoding='utf-8') as file:
    data = json.load(file)  # JSON 데이터를 Python 딕셔너리로 변환

# 2. 특정 key의 값 변경하기
data['name'] = '새로운 이름'

# 3. 변경된 데이터를 다시 JSON 파일에 저장
with open(file_path, 'w', encoding='utf-8') as file:
    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 os
import json

file_path = 'data.json'

# 파일 존재 여부 확인
if not os.path.exists(file_path):
    # 파일이 없으면 기본 데이터를 생성
    data = {'name': '기본 이름'}
else:
    # 파일이 있으면 파일을 읽음
    with open(file_path, 'r', encoding='utf-8') as file:
        data = json.load(file)

# 값 변경
data['name'] = '새로운 이름'

# 변경된 데이터를 다시 저장
with open(file_path, 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

이 방식으로 JSON 파일을 안전하게 처리하고, 원하는 값을 수정한 후 저장할 수 있습니다.