OS: MAC
참고: 👉 점프 투 파이썬 - 라이브러리 예제 바로가기
054. CSV 파일을 읽고 쓰려면? ― csv(씨에스브이)
- csv.writer → 리스트로 저장 / csv.reader → 리스트로 읽기
- DictWriter / DictReader → 딕셔너리 형태로 저장/읽기
- newline="" 은 CSV 특성상 필수 (개행 문제 방지)
| 구분 | 설명 | 예시 | 결과 |
| 모듈명 | csv(콤마로 구분된 값). 파일을 읽고/쓰는 표준 모듈 | import csv | CSV 파일 처리 가능 |
| CSV 파일 쓰기 (writer) | 리스트 데이터를 CSV 파일로 저장 |
import csv with open("data.csv","w",newline="",encoding="utf-8") as f: w = csv.writer(f) w.writerow(["name","age"]) w.writerow(["sophia",30]) |
10 11 data.csv 생성 두 줄의 데이터 저장 |
| CSV 여러 줄 쓰기 (writerows) |
2차원 리스트를 한 번에 저장 |
import csv rows = [ ["apple", 3], ["banana", 5], ["orange", 2], ] with open("f.csv", "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerows(rows) |
출력값 없음(정상) 여러 줄이 CSV로 기록됨 |
| CSV 파일 읽기 (reader) | CSV 파일 내용을 한 줄씩 읽기 |
import csv with open("data.csv", "r", encoding="utf-8") as f: reader = csv.reader(f) for row in reader: print(row) |
['name', 'age'] ['sophia', '30'] |
| DictWriter 로 쓰기 |
딕셔너리를 CSV로 저장 |
import csv with open("people.csv", "w", newline="", encoding="utf-8") as f: fieldnames = ["name", "age"] writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerow({"name": "sophia", "age": 30}) |
10 11 dict 형식으로 CSV 구성 가능 |
| DictReader로 읽기 | CSV를 딕셔너리 형태로 읽기 |
import csv with open("people.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: print(row["name"], row["age"]) |
sophia 30 (키 기반 접근 가능) |
| 파일 모드 | csv는 자동 개행 문제 방지 위해 newline="" 필요(필수) |
open(..., newline="") # CSV 파일을 쓸 때 자동으로 빈 줄(공백 줄)이 생기는 걸 방지하는 옵션 |
라이브러리 예제 문제:



055. 설정 파일에서 정보를 읽으려면? ― configparser(컨피그파서)
✔ 문자열 기반 설정 관리 ✔ JSON보다 가벼운 설정 파일용 ✔ 키-값 구성이라 읽기 쉬움
| 구분 | 설명 | 예시 | 결과 |
| 모듈명 | configparser INI 형식 설정 파일 (.ini)을 읽고 쓰는 모듈 |
import configparser | 설정 파일 읽기/쓰기 가능 |
| 기본 개념 | INI 파일은 섹션 + 키=값 형태로 구성됨 |
# ini 파일 생성하기 import configparser config = configparser.ConfigParser() config["DB"] = { "host": "localhost", "port": 3306 } config["USER"] = { "name": "Sophia", "level": 5 } with open("config.ini", "w", encoding="utf-8") as f: config.write(f) |
출력값 없음(정상) 파일 내 키-값 형태의 설정 데이터 [DB] host=localhost port=3306 [USER] name = Sophia level = 5 |
| 설정 파일 읽기 (Read) |
설정 값을 문자열로 가져옴 |
import configparser config = configparser.ConfigParser() config.read("config.ini", encoding="utf-8") # 값 읽기 print(config["DB"]["host"]) print(config.getint("DB", "port")) print(config["USER"]["name"]) print(config.getint("USER", "level")) |
localhost 3306 Sophia 5 |
| section 목록 | config.sections() | print(config.sections()) #섹션 리스트 반환 | ['DB', 'USER'] |
| 값 가져오기 | config["DB"]["host"], 문자열 형태 |
config["DB"]["host"] | 'localhost' |
| 값을 숫자로 변환 | config.getint(), int로 변환 | config.getint("DB","port") | 3306 |
| 설정 파일 쓰기 (Write) |
새로운 INI 생성 | config.write(open("out.ini","w")) | 출력값 없음(정상) |
| 옵션 존재 확인 | config.has_option("DB","host") | True |
라이브러리 예제 문제: 다음과 같이 FTP 서버 관련 설정을 저장한 ftp.ini 파일에서 FTP2 섹션의 포트(PORT) 정보를 알고자 한다. 어떻게 프로그램을 만들어야 할까?
| [파일명: ftp.ini] |
| [FTP1] SERVER_IP = 111.23.56.78 PORT = 21 USERNAME = foo PASSWORD = bar [FTP2] SERVER_IP = 111.23.56.79 PORT = 22221 USERNAME = admin PASSWORD = hello |
