이번에는 파이썬 형식으로 된 모듈이 아닌, 외부파일을 읽고, 쓰기 작업을 해본다.open()
close()
with
, as
# CSV 파일 읽기 sample1.csv 파일은 데이터들이 ,
로 구분 되어져 있다. sample1.csv 파일
1 2 3 4 5 6 7 8 9 10 11 번호, 이름, 가입일시, 나이 1, 김정수, 2017-01-19 11:30:00, 25 2, 박민구, 2017-02-07 10:22:00, 35 3, 정순미, 2017-01-22 09:10:00, 33 4, 김정현, 2017-02-22 14:09:00, 45 5, 홍미진, 2017-04-01 18:00:00, 17 6, 김순철, 2017-05-14 22:33:07, 22 7, 이동철, 2017-03-01 23:44:45, 27 8, 박지숙, 2017-01-11 06:04:18, 30 9, 김은미, 2017-02-08 07:44:33, 51 10, 장혁철, 2017-12-01 13:01:11, 16
csv파일도 똑같이 파일 open() 함수를 사용하여 불러온다. read() 대신 csv.reader()
로 불러온 파일을 읽어들인다.
1 2 3 4 5 6 7 import csvwith open('./resource/sample1.csv' , 'r' ) as f: reader = csv.reader(f) for c in reader: print(c)
1 2 3 4 5 6 7 8 9 10 11 ['번호', '이름', '가입일시', '나이'] ['1', '김정수', '2017-01-19 11:30:00', '25'] ['2', '박민구', '2017-02-07 10:22:00', '35'] ['3', '정순미', '2017-01-22 09:10:00', '33'] ['4', '김정현', '2017-02-22 14:09:00', '45'] ['5', '홍미진', '2017-04-01 18:00:00', '17'] ['6', '김순철', '2017-05-14 22:33:07', '22'] ['7', '이동철', '2017-03-01 23:44:45', '27'] ['8', '박지숙', '2017-01-11 06:04:18', '30'] ['9', '김은미', '2017-02-08 07:44:33', '51'] ['10', '장혁철', '2017-12-01 13:01:11', '16']
딕셔너리형태로 읽어오기 reader() 대신 csv 클래스 옵션에 csv.DictReader()
로 딕셔너리 형태로 읽어온다.
1 2 3 4 5 6 7 with open('./resource/sample1.csv' , 'r' , encoding='CP949' ) as f: reader = csv.DictReader(f) for c in reader: for k, v in c.items(): print(k, v) print('---------------' )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 번호 1 이름 김정수 가입일시 2017-01-19 11:30:00 나이 25 --------------- 번호 2 이름 박민구 가입일시 2017-02-07 10:22:00 나이 35 --------------- 번호 3 이름 정순미 가입일시 2017-01-22 09:10:00 나이 33 --------------- 번호 4 이름 김정현 가입일시 2017-02-22 14:09:00 나이 45 --------------- 번호 5 이름 홍미진 가입일시 2017-04-01 18:00:00 나이 17 --------------- 번호 6 이름 김순철 가입일시 2017-05-14 22:33:07 나이 22 --------------- 번호 7 이름 이동철 가입일시 2017-03-01 23:44:45 나이 27 --------------- 번호 8 이름 박지숙 가입일시 2017-01-11 06:04:18 나이 30 --------------- 번호 9 이름 김은미 가입일시 2017-02-08 07:44:33 나이 51 --------------- 번호 10 이름 장혁철 가입일시 2017-12-01 13:01:11 나이 16 ---------------
csv파일 옵션 주기 sample2.csv 파일의 데이터들은 |
로 구분되어져 있다. sample2.csv
1 2 3 4 5 6 7 8 9 10 11 번호|이름|가입일시|나이 1|김정수|2017-01-19 11:30:00|25 2|박민구|2017-02-07 10:22:00|35 3|정순미|2017-01-22 09:10:00|33 4|김정현|2017-02-22 14:09:00|45 5|홍미진|2017-04-01 18:00:00|17 6|김순철|2017-05-14 22:33:07|22 7|이동철|2017-03-01 23:44:45|27 8|박지숙|2017-01-11 06:04:18|30 9|김은미|2017-02-08 07:44:33|51 10|장혁철|2017-12-01 13:01:11|16
csv파일 데이터를 읽어오는데 | 를 없애는 옵션을 넣어 불러오면 깔끔하게 불러온 것을 볼수 있다.delimiter='|'
1 2 3 4 5 with open('./resource/sample2.csv' , 'r' ) as f: reader = csv.reader(f, delimiter='|' ) for c in reader: print(c)
1 2 3 4 5 6 7 8 9 10 11 ['번호', '이름', '가입일시', '나이'] ['1', '김정수', '2017-01-19 11:30:00', '25'] ['2', '박민구', '2017-02-07 10:22:00', '35'] ['3', '정순미', '2017-01-22 09:10:00', '33'] ['4', '김정현', '2017-02-22 14:09:00', '45'] ['5', '홍미진', '2017-04-01 18:00:00', '17'] ['6', '김순철', '2017-05-14 22:33:07', '22'] ['7', '이동철', '2017-03-01 23:44:45', '27'] ['8', '박지숙', '2017-01-11 06:04:18', '30'] ['9', '김은미', '2017-02-08 07:44:33', '51'] ['10', '장혁철', '2017-12-01 13:01:11', '16']
# CSV 파일 쓰기 이번에는 csv파일을 생성하고, 쓰기도 해본다.csv.writer()
와 writerow()
사용한다.
1 2 3 4 5 6 7 w = [[1 ,2 ,3 ], [4 ,5 ,6 ], [7 ,8 ,9 ], [10 ,11 ,12 ], [13 ,14 ,15 ], [16 ,17 ,18 ]] with open('./resource/sample3.csv' , 'w' ) as f: wt = csv.writer(f) for v in w: wt.writerow(v)
resource/ 디렉토리 안에 sample3.csv 파일이 생성되고 안에 쓴 데이터가 들어가있다.
1 2 3 4 5 6 1,2,3 4,5,6 7,8,9 10,11,12 13,14,15 16,17,18
위처럼 다량의 데이터를 한번에 쓰려면 writerows()
를 이용하여 간단하게 할 수도 있다.
1 2 3 4 5 w = [[1 ,2 ,3 ], [4 ,5 ,6 ], [7 ,8 ,9 ], [10 ,11 ,12 ], [13 ,14 ,15 ], [16 ,17 ,18 ]] with open('./resource/sample4.csv' , 'w' ) as f: wt = csv.writer(f) wt.writerows(w)
1 2 3 4 5 6 1,2,3 4,5,6 7,8,9 10,11,12 13,14,15 16,17,18
# EXCEL 파일 열기 엑셀 파일 형식은 XSL, XLSX 엑셀 파일 열기 패키지로 pandas를 주로 이용(openpyxl, xlrd)
pip 로 pandas, openpyxl, xlrd 설치
1 2 3 $ pip install pandas $ pip install openpyxl $ pip install xlrd
pandas로 엑셀 파일을 열어보자.
read_excel()
1 2 3 import pandas as pdxlsx = pd.read_excel('./resource/sample.xlsx' )
1 2 3 4 5 6 Sap Co. 대리점 영업사원 전월 금월 TEAM 총 판매수량 0 KI1316 경기수원대리점 이기정 1720000 2952000 1 123 1 KI1451 충청홍성대리점 정미진 4080000 2706000 2 220 2 KI1534 경기화성대리점 경인선 600000 2214000 1 320 3 KI1636 강원속초대리점 이동권 3720000 2870000 3 110 4 KI1735 경기안양대리점 강준석 4800000 2296000 1 134
1 2 3 4 5 6 Sap Co. 대리점 영업사원 전월 금월 TEAM 총 판매수량 15 KI2870 경기구리시대리점 박진형 6000000 3400000 2 143 16 KI2910 강원춘천대리점 김은향 4800000 4896000 1 176 17 KI3030 강원영동대리점 전수창 4560000 3128000 2 98 18 KI3131 경기하남대리점 김민정 2750000 7268000 3 293 19 KI3252 강원포천대리점 서가은 2420000 4740000 4 240
# EXCEL 파일 쓰기 1 xlsx = pd.read_excel('./resource/sample.xlsx' )
엑셀파일로 쓰기 to_excel()
1 xlsx.to_excel('./resource/result.xlsx' , index=False )
csv파일로 쓰기 to_csv()
1 xlsx.csv('./resource/result.csv' , index=False )
# 키워드
csv
csv.reader()
csv.reader(delimiter=’’)
csv.dicReader()
csv.writer()
pandas
to_excel()
to_csv()