Python에서 JSON 파일 읽기 및 데이터 활용
Python에서 JSON 파일 읽기 및 데이터 활용
JSON (JavaScript Object Notation)은 데이터를 저장하고 전송하기 위한 경량 포맷으로, 사람이 읽기 쉽고 기계가 처리하기도 용이합니다. Python에서는 내장 모듈인 json
을 사용하여 JSON 파일을 쉽게 다룰 수 있습니다. 이번 글에서는 Python에서 JSON 파일을 읽고 데이터를 사용하는 방법을 알아보겠습니다.
1. JSON 모듈 소개
Python의 표준 라이브러리에는 JSON 데이터를 처리하기 위한 json
모듈이 포함되어 있습니다. 이 모듈을 사용하면 JSON 파일을 쉽게 읽고 쓸 수 있습니다. 기본적으로 JSON은 Python의 사전(dict) 타입과 잘 호환되므로, JSON 데이터를 파이썬 객체로 변환하거나, 그 반대로도 쉽게 변환할 수 있습니다.
2. JSON 파일 읽는 방법
2.1 JSON 파일 준비
우선, 아래와 같은 예시 JSON 파일이 있다고 가정해보겠습니다. 이 파일을 data.json
으로 저장했다고 가정합니다.
{
"name": "John Doe",
"age": 30,
"is_student": false,
"courses": [
{
"title": "Mathematics",
"grade": "A"
},
{
"title": "Physics",
"grade": "B+"
}
]
}
2.2 JSON 파일 읽기
JSON 파일을 읽기 위해서는 open()
함수와 json
모듈의 load()
함수를 사용합니다. 다음 코드는 JSON 파일을 열고, 데이터를 파싱하는 예시입니다.
import json
# JSON 파일 경로
= 'data.json'
file_path
# 파일을 열고 JSON 데이터를 읽기
with open(file_path, 'r') as json_file:
= json.load(json_file)
data
# 읽어온 데이터 출력
print(data)
위 코드는 data.json
파일을 열고, 그 내용을 파이썬 딕셔너리로 변환합니다. 이때 json.load()
함수는 파일 객체를 인자로 받아 파일 내용을 파싱하고, 그 결과를 Python 객체로 반환합니다.
2.3 JSON 데이터 구조 이해하기
위 코드에서 data
변수에 저장된 데이터는 파이썬의 딕셔너리 형태입니다. 예를 들어, 이름과 나이를 출력하려면 다음과 같이 할 수 있습니다.
# JSON 데이터에서 특정 값 출력
print(f"Name: {data['name']}")
print(f"Age: {data['age']}")
출력 결과는 다음과 같습니다.
Name: John Doe
Age: 30
리스트 형태의 데이터를 다루는 방법도 살펴보겠습니다. 예를 들어, 사용자가 수강한 과목과 성적을 출력하려면 다음과 같이 할 수 있습니다.
# courses 항목의 리스트를 순회하며 각 과목의 제목과 성적 출력
for course in data['courses']:
print(f"Course: {course['title']}, Grade: {course['grade']}")
출력 결과는 다음과 같습니다.
Course: Mathematics, Grade: A
Course: Physics, Grade: B+
3. JSON 데이터 수정 및 파일 저장
JSON 데이터를 수정한 후 다시 파일로 저장하는 방법도 알아보겠습니다.
3.1 JSON 데이터 수정
Python의 딕셔너리와 리스트는 변경 가능한(mutable) 데이터 타입이므로, 데이터를 쉽게 수정할 수 있습니다. 예를 들어, 사용자의 나이를 31로 수정하고, 새로운 과목을 추가해보겠습니다.
# 나이 수정
'age'] = 31
data[
# 새로운 과목 추가
= {
new_course "title": "Chemistry",
"grade": "A-"
}'courses'].append(new_course) data[
3.2 수정된 데이터 저장
수정된 데이터를 다시 JSON 파일로 저장하려면 json.dump()
함수를 사용합니다.
# 수정된 데이터를 JSON 파일로 저장
with open(file_path, 'w') as json_file:
=4) json.dump(data, json_file, indent
여기서 indent=4
는 저장되는 JSON 파일을 보기 좋게 들여쓰는 옵션입니다. 수정된 파일의 내용은 다음과 같을 것입니다.
{
"name": "John Doe",
"age": 31,
"is_student": false,
"courses": [
{
"title": "Mathematics",
"grade": "A"
},
{
"title": "Physics",
"grade": "B+"
},
{
"title": "Chemistry",
"grade": "A-"
}
]
}
4. 예외 처리
파일을 읽거나 쓸 때에는 파일이 없거나, JSON 형식이 잘못되었을 경우를 대비한 예외 처리가 필요합니다. 기본적인 예외 처리 코드를 추가하는 방법을 소개합니다.
try:
with open(file_path, 'r') as json_file:
= json.load(json_file)
data except FileNotFoundError:
print(f"Error: {file_path} 파일을 찾을 수 없습니다.")
except json.JSONDecodeError:
print("Error: JSON 파일 형식이 잘못되었습니다.")
이 코드는 파일이 없거나, JSON 형식이 잘못된 경우 사용자에게 오류 메시지를 출력합니다.