import json
= {"이름": "영희", "나이": 30}
data
# Python 객체를 JSON 문자열로 변환
= json.dumps(data, ensure_ascii=False, indent=4)
json_str print(json_str)
{
"이름": "영희",
"나이": 30
}
CSV(Comma-Separated Values) 파일은 데이터를 쉼표(,
)로 구분하여 저장하는 텍스트 파일 형식이다. 주로 엑셀(Excel), 데이터베이스, 웹 애플리케이션 등에서 데이터를 저장하고 교환하는 데 사용된다. CSV 파일은 일반적으로 행(row)과 열(column) 형태로 데이터를 저장하며, 각 행은 줄바꿈 문자(\n
), 각 열은 쉼표(,
)로 구분된다.
기능 | 함수 |
---|---|
CSV 파일 쓰기 (리스트) | csv.writer(file).writerows(data) |
CSV 파일 읽기 (리스트) | csv.reader(file) |
CSV 파일 쓰기 (딕셔너리) | csv.DictWriter(file, fieldnames=[]) |
CSV 파일 읽기 (딕셔너리) | csv.DictReader(file) |
헤더 추가 | writer.writeheader() |
CSV 구분자 변경 | csv.writer(file, delimiter=";") |
파일 존재 여부 확인 | os.path.exists("파일명") |
Python의 csv
모듈을 활용하면 엑셀 파일을 다루듯이 데이터를 쉽게 저장하고 읽을 수 있다.
이름,나이,직업
철수,25,학생
영희,30,개발자 민수,28,디자이너
Python에서 CSV 파일을 저장할 때는 csv
모듈을 사용한다.
CSV 파일 저장 (writerow()
)
import csv
# 저장할 데이터
= [
data "이름", "나이", "직업"],
["철수", 25, "학생"],
["영희", 30, "개발자"],
["민수", 28, "디자이너"]
[
]
# CSV 파일로 저장
with open("data.csv", "w", newline="", encoding="utf-8") as file:
= csv.writer(file) # CSV 작성 객체 생성
writer # 여러 행을 한 번에 저장 writer.writerows(data)
data.csv
파일)
이름,나이,직업
철수,25,학생
영희,30,개발자 민수,28,디자이너
csv.writer(file)
: CSV 작성 객체 생성writerow()
: 한 행씩 저장writerows()
: 여러 행을 한 번에 저장newline=""
: 줄바꿈 문제를 방지CSV 파일을 읽을 때는 csv.reader()
를 사용하여 데이터를 리스트로 변환할 수 있다.
CSV 파일 읽기 (reader()
)
import csv
# CSV 파일 읽기
with open("data.csv", "r", encoding="utf-8") as file:
= csv.reader(file) # CSV 읽기 객체 생성
reader for row in reader:
print(row)
출력
['이름', '나이', '직업']
['철수', '25', '학생']
['영희', '30', '개발자'] ['민수', '28', '디자이너']
csv.reader(file)
: CSV 읽기 객체 생성(1) CSV 파일을 딕셔너리로 저장 (DictWriter
)
딕셔너리(dict
) 데이터를 CSV 파일로 저장할 수도 있다.
import csv
# 딕셔너리 데이터
= [
data "이름": "철수", "나이": 25, "직업": "학생"},
{"이름": "영희", "나이": 30, "직업": "개발자"},
{"이름": "민수", "나이": 28, "직업": "디자이너"}
{
]
# CSV 파일 저장
with open("data_dict.csv", "w", newline="", encoding="utf-8") as file:
= ["이름", "나이", "직업"]
fieldnames = csv.DictWriter(file, fieldnames=fieldnames)
writer
# 헤더 저장
writer.writeheader() # 데이터 저장 writer.writerows(data)
출력 (data_dict.csv
파일)
이름,나이,직업
철수,25,학생
영희,30,개발자 민수,28,디자이너
csv.DictWriter(file, fieldnames=[])
: 딕셔너리를 CSV로 저장하는 객체writeheader()
: 헤더(Header) 저장writerows()
: 여러 개의 딕셔너리를 한 번에 저장(2) CSV 파일을 딕셔너리로 읽기 (DictReader
)
import csv
# CSV 파일 읽기
with open("data_dict.csv", "r", encoding="utf-8") as file:
= csv.DictReader(file) # 딕셔너리 형태로 읽기
reader for row in reader:
print(row)
{'이름': '철수', '나이': '25', '직업': '학생'}
{'이름': '영희', '나이': '30', '직업': '개발자'} {'이름': '민수', '나이': '28', '직업': '디자이너'}
csv.DictReader(file)
: CSV 데이터를 딕셔너리(dict
) 형태로 변환dict
형태로 반환됨import os
import csv
= "data.csv"
file_name
if os.path.exists(file_name):
with open(file_name, "r", encoding="utf-8") as file:
= csv.reader(file)
reader for row in reader:
print(row)
else:
print("파일이 존재하지 않습니다.")
CSV 파일에서 특정 열(column)만 선택하여 읽을 수도 있다.
import csv
with open("data.csv", "r", encoding="utf-8") as file:
= csv.reader(file)
reader next(reader) # 헤더 건너뛰기
for row in reader:
print(row[0]) # '이름' 열만 출력
기본적으로 CSV는 쉼표(,
)로 구분되지만, 세미콜론(;
) 또는 탭(\t
)으로 변경할 수도 있다.
(1) 세미콜론(;
)으로 구분
with open("data_semicolon.csv", "w", newline="", encoding="utf-8") as file:
= csv.writer(file, delimiter=";") # 구분자 변경
writer writer.writerows(data)
(2) 탭(\t
)으로 구분
with open("data_tab.csv", "w", newline="", encoding="utf-8") as file:
= csv.writer(file, delimiter="\t")
writer writer.writerows(data)
JSON(JavaScript Object Notation)은 데이터를 저장하고 전송하기 위한 경량 데이터 형식으로, Python에서는 json
모듈을 사용하여 JSON 파일을 읽고 쓸 수 있다. JSON은 키-값 쌍으로 이루어진 구조이며, Python의 dict
와 유사하다. 따라서 Python의 딕셔너리, 리스트 등의 자료형을 JSON 파일로 저장하거나 불러올 수 있다.
기능 | 함수 |
---|---|
Python 객체 → JSON 파일 저장 | json.dump(data, file) |
JSON 파일 → Python 객체 읽기 | json.load(file) |
Python 객체 → JSON 문자열 변환 | json.dumps(data) |
JSON 문자열 → Python 객체 변환 | json.loads(json_string) |
JSON을 보기 좋게 저장 | indent=4 |
한글 깨짐 방지 | ensure_ascii=False |
JSON 파일은 아래와 같은 형태로 구성된다.
{
"이름": "철수",
"나이": 25,
"취미": ["축구", "독서", "영화 감상"],
"주소": {
"도시": "서울",
"우편번호": "12345"
}
}
" "
)로 감싸야 한다.[]
로 감싸서 사용한다.{}
로 감싸서 키-값 쌍을 사용한다.Python 객체(딕셔너리, 리스트 등)를 JSON 파일로 저장할 수 있다.
JSON 파일 저장
import json
# 저장할 데이터 (Python 딕셔너리)
= {
data "이름": "철수",
"나이": 25,
"취미": ["축구", "독서", "영화 감상"],
"주소": {
"도시": "서울",
"우편번호": "12345"
}
}
# JSON 파일로 저장
with open("data.json", "w", encoding="utf-8") as file:
file, ensure_ascii=False, indent=4) json.dump(data,
출력(data.json
파일 내용)
{
"이름": "철수",
"나이": 25,
"취미": ["축구", "독서", "영화 감상"],
"주소": {
"도시": "서울",
"우편번호": "12345"
}
}
json.dump(data, file)
: Python 객체를 JSON 파일로 저장한다.ensure_ascii=False
: 한글을 올바르게 저장하기 위해 사용 (기본값 True
이면 유니코드 변환됨)indent=4
: JSON 파일을 보기 좋게 정렬JSON 파일을 읽어서 Python 객체로 변환할 수 있다.
JSON 파일 읽기
import json
# JSON 파일 열기
with open("data.json", "r", encoding="utf-8") as file:
= json.load(file) # JSON을 Python 객체로 변환
data
# 데이터 출력
print(data)
print(data["이름"]) # '철수'
print(data["취미"]) # ['축구', '독서', '영화 감상']
json.load(file)
: JSON 파일을 읽어서 Python 객체로 변환한다.dict
) 또는 리스트(list
)로 변환됨.json.dumps()
와 json.loads()
를 사용한다.(1) Python 객체 → JSON 문자열 (dumps()
)
import json
= {"이름": "영희", "나이": 30}
data
# Python 객체를 JSON 문자열로 변환
= json.dumps(data, ensure_ascii=False, indent=4)
json_str print(json_str)
{
"이름": "영희",
"나이": 30
}
(2) JSON 문자열 → Python 객체 (loads()
)
import json
= '{"이름": "영희", "나이": 30}'
json_str
# JSON 문자열을 Python 객체로 변환
= json.loads(json_str)
data print(data["이름"]) # '영희'
영희
(1) 리스트 데이터를 JSON으로 저장하고 읽기
import json
# 리스트 데이터
= ["사과", "바나나", "포도"]
fruits
# JSON 파일로 저장
with open("fruits.json", "w", encoding="utf-8") as file:
file, ensure_ascii=False)
json.dump(fruits,
# JSON 파일 읽기
with open("fruits.json", "r", encoding="utf-8") as file:
= json.load(file)
fruits_list
print(fruits_list) # ['사과', '바나나', '포도']
(2) JSON 파일이 존재하는지 확인 후 읽기
파일이 존재하는지 확인한 후 JSON을 읽으면 오류를 방지할 수 있다.
import os
import json
= "data.json"
file_name
if os.path.exists(file_name): # 파일 존재 여부 확인
with open(file_name, "r", encoding="utf-8") as file:
= json.load(file)
data print(data)
else:
print("파일이 존재하지 않습니다.")