
Python CSV Read Write 알아보기
# Chapter09-2
# CSV 파일 읽기 및 쓰기
# CSV(Comma-Separated Values) : 콤마로 구분된 데이터 형식의 텍스트 파일
import csv
# 예제 1 : 기본적인 CSV 파일 읽기
with open('resource/test1.csv', 'r') as f:
reader = csv.reader(f) # reader 객체 생성
# 객체 및 속성 확인
print(reader) # reader 객체 정보 출력
next(reader) # 첫 번째 줄(header) 건너뛰기
print(type(reader)) # <class '_csv.reader'>
print(dir(reader)) # 속성 및 메서드 확인 (__iter__ 포함)
print()
print('=====' * 8)
print()
# 각 행을 반복 출력
for c in reader:
# 각 행은 리스트 형태로 반환됨
print(' : '.join(c)) # 리스트를 문자열로 변환 후 출력
print()
print('=====' * 8)
print()
# 예제 2 : 구분자(delimiter) 지정하여 읽기
with open('resource/test1.csv', 'r') as f:
reader = csv.reader(f, delimiter=',') # 콤마 구분자 명시
for c in reader:
print(c) # 각 행 출력
print()
print('=====' * 8)
print()
# 예제 3 : DictReader 사용 → 각 행을 딕셔너리로 반환
with open('resource/test1.csv', 'r') as f:
reader = csv.DictReader(f) # 첫 행을 key로 인식하여 딕셔너리 구성
print(reader)
print(type(reader)) # <class '_csv.DictReader'>
print(dir(reader)) # 주요 속성 확인
print()
for c in reader:
for k, v in c.items(): # key, value 쌍으로 접근 가능
print(k, v)
print('-' * 15)
print()
print('=====' * 8)
print()
# 예제 4 : CSV 파일 쓰기 (writer 사용)
# 2차원 리스트 데이터 준비
w = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
[13, 14, 15],
[16, 17, 18],
[19, 20, 21]
]
with open('resource/write1.csv', 'w', encoding='UTF-8') as f:
print(dir(csv)) # csv 모듈 내 속성 확인
wt = csv.writer(f) # writer 객체 생성
# 각 행을 파일에 작성
for v in w:
wt.writerow(v) # 리스트 → CSV 행으로 작성
print()
print('=====' * 8)
print()
# 예제 5 : DictWriter 사용 → 딕셔너리 기반 CSV 쓰기
with open('resource/write2.csv', 'w', encoding='UTF-8') as f:
# 필드명 정의
field = ['One', 'Two', 'Three']
# DictWriter 객체 생성
wt = csv.DictWriter(f, fieldnames=field)
wt.writeheader() # 헤더 작성
# 데이터 쓰기
for v in w:
wt.writerow({'One': v[0], 'Two': v[1], 'Three': v[2]})