7. 파일 쓰기( TXT /CSV )
2018. 7. 4. 14:15
txt 파일 쓰기
- 먼저 txt파일을 연 다음(open( 'file명') , 써야(mode-'w')한다. 그것을 어떠한 변수에 대입해준다.
*파일명이 존재하지 않으면, 새로 생성해준다. 프로젝트안에 생성되는 것을 확인할 수 있다. - 열어서 쓰게 해주는 변수를 이용해서 .write( '문자열')을 이용하면 입력시킬 수 있다.
- 쓰고 난 다음에는 닫아준다.
- 한줄 더 추가하고 싶다면, 또 밑에다가 f.write를 해주면 된다.
*하지만 자동으로 줄바꿈이 되지 않는다. -> 위에 문자열 마지막에 \n를 통해 작성한 뒤 한 줄 바꿔주자.
* 실행시킬 때 마다 덮어쓰기가 되는 것 같다.
- 한글을 출력시켜보자.
- 한글이 깨지면서 인코딩문제가 생긴다. 컴퓨터는 한글을 모르기 때문이다. but 실제 txt파일은 잘 열린다. - 위와 같은 문제가 생기는 이유는
Pycharm은 기본적으로 UTF-8로 인코딩 되어있는데, 우리가 생성한 문서txt는 UTF-8로 인코딩되어있지 않아서 문제가 생기는 것.
* 첫번째, 파일을 열 때, ( '파일명', '모드', 에 이어서 encoding 인자를 지정해준다)
*마치 default인자처럼, 파이참이 기본적으로 다른 인코딩으로 되어있는 것을 강제로 UTF-8을 default로 지정해주는 것이다.
CSV 파일 쓰기
CSV : COMMA SEPARATED VALUES 로서,
- 변수에 대입하면서, open()열고 파일명' ~.csv' + 모드'w' + encoding='utp-8'
* csv는 utf-8인코딩하면, 엑셀에서 깨진다. 지워야한다. - write시 마찬가지로, 문자열 안에서, 콤마로 나누어준다.
- close로 닫는다.
- txt와 마찬가지지만, 파일확장자만 txt -> csv로 바뀌었다. 그리고 입력시 문자열처럼 입력하면서, 콤마로 values들을 나눈다.
- txt파일과 마찬가지로, 위쪽문장 끝에, \n을 해줘야 줄바꿈이 된다.
만두가게 임금계산 프로그램을 파일로 저장해보자.
mandoo_wage_txt_csv_generator.py
지난번 mandoo_wage.py의 함수 및 소스코드를 복사해온다.
긴 문장 은 -> txt파일로 저장
짧은 문장은 -> csv파일로 저장할 것이다.
- 먼저 긴문장이 출력되는 for문에서 txt파일을 쓰는 과정을 적어보자(위에서 한 것 참고)
1. for문이 시작되기 전에, txt파일을 연다.
2. for문안에 print()로 출력된 부분을 f.write( + \n줄바꿈 )로 바꿔주기만 하면 된다.
* print는 자동으로 줄바꿈 해주는 것 같다.
3. for문이 끝나고 f.close()를 통해 txt파일을 닫아준다. - 아래 짧은 문장을 csv로 써보자. 마찬가지의 과정이다.
1. for문 전에 open시, 파일명만 제대로 바꾸자.
*csv파일은 open()시 3번째 인자에서, utf-8인코딩하면, 파이참에서는 잘보이지만, 엑셀에서 깨진다.!! ----> 하지마라
2. print대신 csv_file.write(' , , , ')할 때, 정보들을 콤마로 벌려주자.
3. for문 끝나고, close해준다. - 엑셀에서는 '시간',이나 '원'을 사용하지않으므로 빼준다. 그리고 엑셀 맨 윗줄에 칼럼명을 넣으면 좋을 것 같다.
for문을 돌기전에, csv_file.write로 칼럼명 3개를 미리 써놓으면 된다. + 줄바꿈도 빼먹으면 안된다. - 이제 여기에, 출근시간/퇴근시간도 추가해서 출력해보자.
칼럼명에서 추가 / write()에서 {}추가 / format에서 인자 추가 작업을 해주면 된다. - 파이썬으로 쓴 csv파일에 대해서 엑셀 함수를 적용하고 싶다면
[ 다른이름으로 저장-> 엑셀 통합문서로 저장 ] 하고 난 뒤, 사용하면 된다.
'빅데이터 관련 프로그래밍 > Python3 기초 및 업무자동화' 카테고리의 다른 글
참고 : 클래스를 이용하여 데이터 입력하고 쓰기 (0) | 2018.07.04 |
---|---|
8. 클래스(class)와 인스턴스(instance) 및 생성자 (0) | 2018.07.04 |
6 . 함수 - (기본사용법 /구구단출력 / for문 속 함수 / default인자 / 유의점, scope / 기본 제공함수) (0) | 2018.07.03 |
5. 반복문 - while 과 for 그리고 응용(홀짝구분/구구단/리스트요소들 출력) (0) | 2018.07.02 |
4. 파이참 프로젝트 생성 후 버전관리 + 조건문 학습 (0) | 2018.07.02 |