파이썬 CSV 파일 저장하는 방법: 리스트와 딕셔너리 예제까지
파이썬으로 데이터를 정리하다 보면 엑셀보다 먼저 CSV 파일로 저장해야 하는 경우가 많습니다. 특히 파이썬 CSV 저장 방법은 업무 자동화, 크롤링 결과 정리, 로그 백업 같은 작업에서 자주 쓰입니다. 이번 글에서는 파이썬 CSV 저장을 처음 해보는 분도 바로 따라 할 수 있게 가장 쉬운 예제부터 실무에서 자주 만나는 문제까지 정리해보겠습니다.
CSV 파일이 왜 자주 쓰일까?
CSV는 데이터를 쉼표로 구분해서 저장하는 아주 단순한 형식입니다. 단순하지만 그만큼 호환성이 좋아서 파이썬, 엑셀, 구글 스프레드시트, 데이터 분석 도구에서 모두 쉽게 열 수 있습니다.
- 엑셀 없이도 표 형식 데이터를 저장할 수 있습니다.
- 크롤링 결과나 자동화 결과를 빠르게 백업할 수 있습니다.
- 다른 프로그램으로 넘기기 쉬워서 실무에서 자주 사용됩니다.
파이썬 CSV 저장 기본 방법
가장 기본은 파이썬 내장 모듈인 csv를 사용하는 것입니다. 별도 설치가 필요 없어서 초보자도 바로 시작할 수 있습니다.
1. 리스트 데이터를 CSV로 저장하기
행 단위 데이터가 리스트로 정리되어 있다면 writerow() 또는 writerows()를 사용하면 됩니다.
import csv
rows = [
["이름", "부서", "점수"],
["민지", "마케팅", 92],
["준호", "개발", 88],
["서연", "디자인", 95]
]
with open("scores.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.writer(file)
writer.writerows(rows)
print("CSV 저장 완료")
위 코드를 실행하면 scores.csv 파일이 생성되고, 각 리스트가 한 줄씩 저장됩니다.
2. 한 줄씩 추가해서 저장하기
반복문 안에서 데이터를 하나씩 모으는 경우에는 writerow()가 더 편합니다.
import csv
with open("members.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.writer(file)
writer.writerow(["이름", "나이", "도시"])
writer.writerow(["지훈", 27, "서울"])
writer.writerow(["유진", 31, "부산"])
writer.writerow(["하늘", 25, "인천"])
헤더를 먼저 쓰고, 그 아래에 데이터를 한 줄씩 추가하는 방식입니다. 실무에서는 이 패턴이 가장 자주 나옵니다.
딕셔너리를 CSV 파일로 저장하는 방법
실무에서는 리스트보다 딕셔너리 형태 데이터가 더 많이 나옵니다. 예를 들어 API 응답, 크롤링 결과, 사용자 정보처럼 항목명이 명확한 데이터는 DictWriter가 훨씬 편합니다.
3. 딕셔너리 리스트 저장하기
import csv
rows = [
{"이름": "민지", "이메일": "minji@example.com", "가입일": "2026-04-29"},
{"이름": "준호", "이메일": "junho@example.com", "가입일": "2026-04-28"},
{"이름": "서연", "이메일": "seoyeon@example.com", "가입일": "2026-04-27"}
]
fieldnames = ["이름", "이메일", "가입일"]
with open("users.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)
print("딕셔너리 CSV 저장 완료")
writeheader()는 첫 줄에 컬럼명을 자동으로 써줍니다. 딕셔너리 키가 많아질수록 이 방식이 훨씬 관리하기 쉽습니다.
실무에서 자주 쓰는 CSV 저장 예제
크롤링 결과 저장
예를 들어 쇼핑몰 상품명과 가격을 수집했다면 아래처럼 바로 CSV로 저장할 수 있습니다.
import csv
products = [
{"상품명": "무선 키보드", "가격": 39000},
{"상품명": "노트북 거치대", "가격": 27000},
{"상품명": "USB 허브", "가격": 18900}
]
with open("products.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.DictWriter(file, fieldnames=["상품명", "가격"])
writer.writeheader()
writer.writerows(products)
반복 작업 결과 저장
폴더 정리, 메일 발송, 파일 검사 같은 자동화 작업을 했다면 결과 로그를 CSV로 남겨두는 것도 좋습니다.
import csv
logs = [
["파일명", "처리결과"],
["report1.pdf", "성공"],
["report2.pdf", "성공"],
["report3.pdf", "실패"]
]
with open("work_log.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.writer(file)
writer.writerows(logs)
이렇게 저장해두면 나중에 어떤 파일이 처리됐고 어떤 파일이 실패했는지 한눈에 확인할 수 있습니다.
파이썬 CSV 저장할 때 주의할 점
1. newline=""를 꼭 넣기
윈도우 환경에서는 newline=""를 빼면 줄 사이에 빈 줄이 하나씩 더 들어갈 수 있습니다. CSV 저장할 때는 거의 습관처럼 넣는 것이 좋습니다.
2. 한글이 깨지면 utf-8-sig 확인하기
엑셀에서 CSV를 열었을 때 한글이 깨지는 경우가 있습니다. 이런 경우에는 encoding="utf-8-sig"로 저장하면 해결되는 경우가 많습니다.
3. 쉼표가 들어간 데이터 주의하기
주소나 설명 문장처럼 값 안에 쉼표가 포함될 수 있습니다. 이런 경우에도 csv 모듈을 사용하면 자동으로 적절히 처리해주기 때문에 문자열을 직접 이어 붙여 저장하는 방식보다 안전합니다.
4. 컬럼 순서를 미리 정하기
딕셔너리를 CSV로 저장할 때는 fieldnames 순서를 명확히 정해두는 것이 좋습니다. 그래야 파일 구조가 매번 바뀌지 않고, 후속 처리도 쉬워집니다.
언제 이 방법을 쓰면 좋을까?
- 크롤링한 데이터를 엑셀로 보기 쉽게 정리하고 싶을 때
- 반복 업무 결과를 파일로 남기고 싶을 때
- API 응답 데이터를 표 형식으로 저장하고 싶을 때
- 나중에 pandas나 엑셀로 다시 불러올 데이터를 먼저 저장할 때
FAQ
Q1. 파이썬 CSV 저장은 pandas 없이도 가능한가요?
가능합니다. 오히려 간단한 저장 작업은 csv 내장 모듈이 더 가볍고 빠릅니다. 표 형태 데이터를 단순히 저장하는 목적이라면 pandas 없이도 충분합니다.
Q2. CSV 파일을 엑셀로 열면 한글이 깨지는 이유는 뭔가요?
대부분 인코딩 문제입니다. 엑셀에서 한글 깨짐을 줄이려면 utf-8-sig로 저장해보는 것이 가장 쉽습니다. 인코딩 개념이 헷갈린다면 기존 글인 [파이썬] 인코딩 & 디코딩도 함께 보면 도움이 됩니다.
Q3. 리스트와 딕셔너리 중 어떤 방식으로 저장하는 게 좋나요?
컬럼 이름이 분명한 데이터라면 딕셔너리가 더 좋습니다. 반대로 단순한 표 형태라면 리스트 저장이 더 빠르고 코드도 짧습니다.
Q4. CSV 저장 전에 먼저 파일 읽기부터 알아야 하나요?
꼭 그렇지는 않지만 파일 입출력 개념을 함께 이해하면 훨씬 쉬워집니다. 기초가 필요하면 [파이썬] 파일 열어서 읽기 글도 같이 보면 좋습니다.
Q5. 저장한 CSV에서 특정 패턴만 뽑아내고 싶다면 어떻게 하나요?
이럴 때는 정규식이 유용합니다. 예를 들어 이메일, 전화번호, 특정 문자열 패턴을 추출할 때는 [파이썬] 정규식 (regular expression) 글과 함께 보면 연결해서 이해하기 좋습니다.
마무리
이번 글에서는 파이썬 CSV 저장 방법을 리스트 예제와 딕셔너리 예제로 나눠서 정리했습니다. 처음에는 단순히 파일 한 개 저장하는 것처럼 보여도, 익숙해지면 크롤링 결과 정리, 자동화 로그 저장, 데이터 백업 같은 실무 작업에 바로 연결할 수 있습니다.
다음 단계에서는 CSV를 저장하는 것에서 끝내지 않고, 저장한 파일을 다시 읽어서 가공하는 흐름까지 이어가면 실력이 더 빨리 붙습니다. 그리고 문자열 패턴 추출이 필요할 때는 정규식 글, 한글 깨짐이 생길 때는 인코딩 글, 파일 입출력 기초를 먼저 보고 싶다면 파일 읽기 글도 함께 참고해보세요.
'coding' 카테고리의 다른 글
| 파이썬으로 CSV 파일 읽기: 초보자도 이해하는 예제 (0) | 2026.04.27 |
|---|---|
| openpyxl 셀 색상, 폰트, 너비 설정하는 방법 (0) | 2026.04.26 |
| 파이썬 엑셀 자동화 시작하기: openpyxl로 파일 생성, 수정, 저장까지 (0) | 2026.04.25 |
| 파이썬 CSV 한글 깨짐 해결 방법 | UnicodeDecodeError, cp949, utf-8 한 번에 정리 (0) | 2026.04.24 |
| 2026 SQLD 독학 로드맵: 비전공자도 시작할 수 있는 SQL 공부 순서 (1) | 2026.04.23 |


