[Python] 파이썬 CSV파일 입/출력 (FileI/O)
들어가며
파이썬을 코딩하다 보면 파일 입출력은 필수다. 뭐... 어디든지 필수겠지, 하지만 파이썬에서는 데이터 분석을 하는 경우가 많기 때문에 데이터를 읽기/쓰기가 자유로워야 한다. 특히 구분자가 ','로 되어있는 csv파일을 자주 읽게 되는데 csv를 읽는 두가지 방법에 대해서 설명한다.
CSV파일 읽기/쓰기
파일 쓰기
with open('./file.csv', 'wb') as csvfile:
writer = csv.writer(csvfile, delimiter=',')
writer.writerow(['love'] * 3 + ['banana'])
writer.writerow(['hong', 'love', 'banana'])
writer.writerow(['monkey', 'kkikki', 'min'])
# 출력결과 file.csv
'''
love,love,love,banana
hong,love,banana
monkey,kkikki,min
'''
파일 읽기
with open('./file.csv', 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for row in reader:
print row
# ['love', 'love', 'love', 'banana']
# ['hong', 'love', 'banana']
# ['monkey', 'kkikki', 'min']
DictWriter 사용하기
파일 쓰기
첫번째로 fieldnames을 입력을 한다. 여기서 fieldnames은 column명이라고 생각하면 된다. column명인 fisrt_name, last_nam에 해당하는 값을 row로 넣어주는 예제이다.
with open('./dic_file.csv', 'w') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'first_name' : 'banana', 'last_name' : 'ssang'})
writer.writerow({'first_name' : 'kong', 'last_name' : 'al'})
writer.writerow({'first_name' : 'kong', 'last_name' : 'dal'})
# 출력결과 dic_file.csv
'''
first_name,last_name
banana,ssang
kong,al
kong,dal
'''
파일 읽기
파이썬의 Dict의 객체 형태로 파일을 읽어온다. 첫번째 줄에 column명들이 명시가 되어 있어야 한다. first_name, last_name이 key가 되고 row의 값이 key에 맞게 value로 들어간다.
with open('./dic_file.csv', 'rb') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print row
# {'first_name': 'banana', 'last_name': 'ssang'}
# {'first_name': 'kong', 'last_name': 'al'}
# {'first_name': 'kong', 'last_name': 'dal'}
모듈로 사용하기
import csv
import os
def get_csv_writer(filename, rows, delimiter):
with open(filename, 'w') as csvfile:
fieldnames = rows[0].keys()
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=delimiter)
writer.writeheader()
for row in rows:
try:
writer.writerow(row)
except Exception as detail:
print type(detail)
print detail
def get_csv_reader(filename, delimiter):
reader = []
if not os.path.isfile(filename):
csvfile = open(filename, "w")
else:
csvfile = open(filename, "rb")
reader = csv.DictReader(csvfile, delimiter=delimiter)
return list(reader)
외부 코드에서 사용하기 위해서는 아래와 같이 사용하시면 됩니다.
import CSVFileIO
CSVFileIO.write_csv("/home/banana/output.csv", result, ",")
reader = CSVFileIO.read_csv("/home/banana/input.csv", ",")
'Python > Python 프로그래밍' 카테고리의 다른 글
Linux, Centos, MacOS에서 Python3 Virtualenv 구성하기 (0) | 2021.04.28 |
---|---|
[Python] Pillow를 이용한 이미지 분석 with Jupyter(IPython Notebook) 확인하는 방법 (0) | 2021.04.28 |
[Python] argparse를 이용한 입력 파라미터 받는 방법 (0) | 2021.04.28 |
[Python] Singleton Pattern을 이용한 Logger 만들기 (0) | 2021.04.27 |
[Python] 데이터 포맷 변환 - Protocol Buffer를 Json으로 변환 (0) | 2021.04.27 |
[Python] Enum 사용하는 방법 및 예제코드 (0) | 2021.04.27 |
[Python] collections를 이용한 Dictionary 정렬하기 (0) | 2021.04.27 |
[Python] json 모듈 사용하기 :: String을 Dict으로 변환 (0) | 2021.04.27 |