본문 바로가기

Python

Python 예제를 통해 알아보는 CSV

#CSV(Comma Separated Values)

- 각 항목의 값 콤마로 분리

- 행은 new line으로 구분

- 텍스트 파일로 보존 → 문서 처리기나 편집기에서 열람 및 편집


#CSV Module 주요 클래스

#CSV Module 주요 메소드


※book.csv

notitlereg_yearreg_monthreg_date
1java2012712
2spring2013813
3oracle2014914
4python20151015
5struct220161116



#csv_test.py
import csv
f = open('book.csv')
try:
reader= csv.reader(f)
for row in reader:
print(row) # row ----> list형태
print('==============')

f.seek(0) # reader를 실행 한 후 더 이상 읽을 내용이 없으므로 seek을 사용해 맨 처음으로 돌아간다

reader2 = csv.DictReader(f)
for row in reader2:
#print(row) # row ----> Dict형태, 자료형: OrderedDict
print(dict(row))
finally:

f.close()


#csv_test2.py (입력데이터를 통한 CSV파일생성)
import csv
f=open('result.csv','wt') #출력파일 생성(쓰기 --> 콤마 구분데이터)
try:
writer = csv.writer(f, quoting=csv.QUOTE_ALL) # 쓰기 객체 생성
writer.writerow(('No','Alpha','Date'))
for i in range(12):
writer.writerow(('%02d'%(i+1), chr(ord('a')+i),'2018/%02d/12'%(i+1)))
finally:
f.close()
print(open("result.csv ",'rt').read())

※result.csv

NoAlphaDate
01a2018/01/12
02b2018/02/12
03c2018/03/12
04d2018/04/12
05e2018/05/12
06f2018/06/12
07g2018/07/12
08h2018/08/12
09i2018/09/12
10j2018/10/12
11k2018/11/12
12l2018/12/12



#csv_test3.py(CSV파일을 읽어서 DB에 저장)
#book.csv
#book.csv의 no, title를 읽어 mycsv.db의 mybook테이블(id,name)에 저장
import sqlite3
import csv
conn = sqlite3.connect('mycsv.db')
cur = conn.cursor()
cur.execute('drop table if exists mybook')
cur.execute('''create table mybook(
id integer,
name text
)''')
f = open('book.csv','r')
reader = csv.DictReader(f)
for row in reader:
#t=(row[0],row[1])
t = (row['no'],row['title'])
cur.execute('insert into mybook values(?,?)', t)
print(cur.rowcount)
conn.commit()
#DB조회
for row in cur.execute('select * from mybook'):
print(row)