11. 파이썬 CSV모듈 (읽기, 쓰기) + 클래스 분할하기)
2018. 7. 5. 16:58
정의
모듈은 쉽게 말해 남들이 만들어 놓은 것을 갖다 쓰는 것을 말한다.
직접 만드는 것이 아니라.. 갖다 쓰는 것! import를 통해 갖다 쓴다.
다른 사람들의 솔루션을 활용하여 개발속도, 신뢰도 향상을 꾀할 수 있다.
- 모듈, 라이브러리 : 연장이 되어, 간단한 프로그램을 만들 수 있다.
- 프레임워크 : 좀 더 큰 개발, 웹/기계학습 등을 체계 안에서 개발할 수 있다
CSV 모듈
기존 9강. mandoo_management 프로젝트를 그대로 사용한다.
csv_read_practice.py
먼저 csv모듈을 이용한 읽기 방법
- 사용방법 : import csv
*csv모듈은 아나콘다 설치시, 이미 미리 설치되었으므로, import만 해주면 된다. - csv파일 여는 법/닫는 법은 기존과 똑같다.
- 라인을 읽는 readlines()대신 -> csv.reader(f)로 읽는다. 읽은 lines를 for문을 통해 출력해보자.
- 이전에서는 읽은 csv를 콤마기준으로 짜르는 .split(')의 과정이 필요없게 된다. 자동으로 나누어져 있다.
기존의 프로젝트를 바꾸어 개선해보자.
- 먼저 import csv
- lines = f.readlines() -> csv.reader(f)
- for문 안에서,
info = line.split(',') -> 삭제
info[n]->line[n]으로 변경
csv모듈을 이용한 쓰기 방법
- 여는법/닫는법은 동일하나, 열 때, 마지막인자에 newline=''을 비워주는 인자를 넣어줘야 작성후 한줄바꾸기가 없어진다.
- f.write('{}, {}, {}'.format(, , )의 방식에서 ->
(1) (읽기처럼)변수를 한번 거쳐준다. csv_writer = csv.write(f)
(2) 변수를 이용해서, csv_writer.writerow( [리,스,트,형,태] ) 만 넣어주면, '{},{},{}\n'.format 과 줄바꿈을 하지 않아도 된다.
*csv쓰기를 할 때, f = open시 3번째 인자 newline=''을 주지않으면, writerow 이후 줄바꿈1줄이 자동으로 시행된다. - csv쓸 때, open시 newline=''을 주면, 자동으로 줄바꿈이 생기지 않는다.
기존 프로젝트를 개선해보자.
- f_output = open('employee_result.csv', 'w' , newline='') 3번째 인자 추가
- 읽기처럼 쓸 때도, 쓰기변수 생성 : csv_writer = csv.write(f)
- 기존의 f.write('이름, 출근시간, 퇴근시간, 시급, 근무시간, 일당\n') -> 쓰기변수로 writerow함수 + 내용물은 배열로 + 줄바꿈\n은 삭제
csv_writer.writerow(['이름', '출근시간', '퇴근시간', '시급', '근무시간', '일당']) - for문안에서는, f.write( ' {}, {} \n '.format( , ) )했던 것을 주석처리[ ctrl + / ] ->
csv_writer.writerow( [
배열로 각 인스턴스.필드, 함수 채워줌
])
내가 만든 파이썬 파일 분할하고 import하기
내가 만든 class 정의 부분과 <---> 본격적인 f = open 읽기 ~ 작업 ~ 쓰기 까지를 분리하고 싶다.
- 새로운 파이썬 파일을 만들자. employee.py
- class Employee: 정의부분만을 잘라내서 붙힌다.
- 기존의 mandoo_wage_calculator.py 에서는 클래스가 빠져나갔을 것이므로, 클래스의 인스턴스 생성시 빨간색 오류가 뜰 것이다.
from employee import Employee
- from은 같은 프로젝트내 py파일 employee.py를 불러오고
- import는 py파일안의 클래스를 가져온다는 뜻이다.
'빅데이터 관련 프로그래밍 > Python3 기초 및 업무자동화' 카테고리의 다른 글
13. 기존 프로젝트를 python-docx로 문서화해보기 (0) | 2018.07.07 |
---|---|
12. Python-docx 사용해보기 (0) | 2018.07.07 |
참고 : 엑셀의 CSV파일을 읽고->클래스를 활용하여 함수까지계산 -> CSV파일로 쓰기 (0) | 2018.07.05 |
10. 다수의 인스턴스 생성을 위한 엑셀에 인자 입력-> csv로 저장 -> 파일읽기-> 인스턴스 생성 -> 파일 쓰기 (0) | 2018.07.04 |
9. 문자열 클래스의 함수(split과 join / replace / upper와 lower / startswith와 endswith) (0) | 2018.07.04 |