행궁동 데이터 엔지니어

반응형

Python CSV 모듈을 활용한 CSV 파일 읽기와 내용 덧붙이는 방법입니다.

 

1. CSV 모듈로 CSV 파일 읽기

# csv 모듈 import
# 참고링크 : https://docs.python.org/3.7/library/csv.html
import csv
# with로 오픈
with open('pick_bus.csv', 'r', encoding='utf8') as f:
    reader = csv.reader(f)
    station_info = list(reader)[1:]

#csv파일을 제대로 읽어왔는지 일부데이터 확인
station_info[:5]

 

with open('pick_bus.csv', 'r', encodin='utf8') as f: 에서 'pic_bus.csv"는 오픈하려고 하는 csv 파일명이고 뒤에 'r' 옵션은 read 하겠다는 의미, encoding='utf8'은 인코딩 방법을 명시해준 것입니다.

 

앞에 with 문을 써준 것은 파일을 open 하고 나서 close를 해주어야 하는데, with문을 사용하면 그 절차를 생략할 수 있습니다.

 

reader = csv.reader(f)는 read 한 파일을 읽는 것이고, station_info = list(reader)[1:]은 읽은 CSV 파일을 인덱스 1번부터 끝까지 슬라이싱 해서 리스트로 저장하는 것입니다.

 

위의 코드 결과는 아래에 첨부합니다.

 

pick_bus.csv 파일을 읽어서 불러온 결과
제가 예제코드에 읽어온 pick_bus csv 파일 

 

2. CSV 파일에 계속해서 내용 덧붙이기 

경우에 따라 CSV 파일에 내용을 계속 덧붙여야(Append) 하는 경우가 있습니다.

그때는 파일 open시 'r' : read옵션이 아니라 'a' : append 옵션을 사용하면 됩니다. 쓰기용으로 'w' : write 옵션도 존재하고 'rw'와 같이 read, write 옵션을 동시에 사용할 수도 있습니다. 상세 코드와 결과 아래에 첨부했습니다. 

import csv

mylist= ['a','b','c']

for i in range(5):
    with open('test.csv', 'a') as myfile:
        wr = csv.writer(myfile)
        wr.writerow(mylist)

for i in range(5):
    with open('test.csv', 'a', newline='') as myfile:
        wr = csv.writer(myfile)
        wr.writerow(mylist)

for loop를 2개 만들어서 ['a', 'b', 'c']를 각 5번씩 Append 하는 코드입니다.

위아래 2개 loop의 차이는 1번 loop는 newline이 default 값{\n)으로 들어가고, 2번 loop는 newline을 ''으로 명시해주었다는 것입니다. 결과적으로 1번 반복문(loop)에서는 덧붙일 때마다 1행 씩 빈행이 발생하고 2번 반복문은 빈행이 발생하지 않습니다. 

 

 

코드
newline을 default값인 개행문자 \n으로 두었을때와, newline=''으로 발생한 차이입니다.

 

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band