본문 바로가기

미래 먹거리를 위하여

[파이썬 정복하기] 라이브러리 9장 - 다양한 형식의 파일 다루기 (맥OS 기준) — csv, ini

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 파일을 쓸 때 자동으로 빈 줄(공백 줄)이 생기는 걸 방지하는 옵션
 

라이브러리 예제 문제:

점프 투 파이썬 - 라이브러리 예제 편 9장 54번 문제
점프 투 파이썬 - 라이브러리 예제 편 9장 54번 문제 풀이 및 결과 1(파일 생성)
점프 투 파이썬 - 라이브러리 예제 편 9장 54번 문제 풀이 및 결과 2(파일 생성)

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

점프 투 파이썬 - 라이브러리 예제 편 9장 55번 문제 풀이 및 결과