Python 딕셔너리를 CSV 파일로 저장하는 방법
CSV(Comma Separated Values)는 다양한 플랫폼과 애플리케이션에서 폭넓게 지원되는 가장 대표적인 데이터 교환 형식입니다. 파이썬에서는 별도의 설치 없이 표준 라이브러리에 포함된 csv 모듈만으로 딕셔너리(dict) 데이터를 CSV 파일로 손쉽게 저장할 수 있습니다.
방법 1. open() 함수로 직접 작성하기
가장 간단한 방법은 open() 함수로 CSV 파일을 쓰기('w') 모드로 연 뒤, 키와 값을 쉼표로 구분된 형태로 한 줄씩 직접 작성하는 것입니다.
import csv
my_dict = {'1': 'aaa', '2': 'bbb', '3': 'ccc'}
with open('test.csv', 'w', newline='') as f:
for key in my_dict.keys():
f.write('%s,%s\n' % (key, my_dict[key]))
위 코드를 실행하면 test.csv 파일에 다음과 같은 내용이 저장됩니다.
1,aaa 2,bbb 3,ccc
방법 2. csv.DictWriter 클래스 활용하기
여러 개의 딕셔너리를 테이블 형태로 저장해야 한다면 csv 모듈의 DictWriter 클래스를 사용하는 것이 좋습니다. DictWriter는 파일 객체와 필드 이름(fieldnames) 리스트를 인자로 받으며, writeheader() 메서드가 첫 번째 줄에 헤더를 기록하고, 반복문 안에서 writerow()를 호출할 때마다 각 딕셔너리가 하나의 행으로 저장됩니다.
import csv
csv_columns = ['No', 'Name', 'Country']
dict_data = [
{'No': 1, 'Name': 'Alex', 'Country': 'India'},
{'No': 2, 'Name': 'Ben', 'Country': 'USA'},
{'No': 3, 'Name': 'Shri Ram', 'Country': 'India'},
{'No': 4, 'Name': 'Smith', 'Country': 'USA'},
{'No': 5, 'Name': 'Yuva Raj', 'Country': 'India'},
]
csv_file = 'Names.csv'
try:
with open(csv_file, 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for data in dict_data:
writer.writerow(data)
except IOError:
print('I/O error')
실행 결과 생성되는 Names.csv 파일은 아래와 같습니다.
No,Name,Country 1,Alex,India 2,Ben,USA 3,Shri Ram,India 4,Smith,USA 5,Yuva Raj,India
실무 팁
Windows에서 빈 줄 방지: Windows 환경에서는 open() 호출 시 newline='' 옵션을 지정하지 않으면 행 사이에 불필요한 빈 줄이 삽입될 수 있으므로 항상 함께 사용하는 것이 좋습니다.
pandas 활용: 데이터 분석 환경이라면 pandas 라이브러리를 사용하는 것도 편리합니다. pd.DataFrame(dict_data).to_csv('Names.csv', index=False) 한 줄로 동일한 결과를 얻을 수 있습니다.