7. 파일 쓰기( TXT /CSV )

2018. 7. 4. 14:15


txt 파일 쓰기

write_txt_file.py

  1. 먼저 txt파일을 연 다음(open( 'file명') , 써야(mode-'w')한다. 그것을 어떠한 변수에 대입해준다.
    *파일명이 존재하지 않으면, 새로 생성해준다. 프로젝트안에 생성되는 것을 확인할 수 있다.
  2. 열어서 쓰게 해주는 변수를 이용해서 .write( '문자열')을 이용하면 입력시킬 수 있다.
  3. 쓰고 난 다음에는 닫아준다.
    image
    image


  • 위에서 생성하여 쓴 txt은 직접 실행해볼 수 도 있다.
    - 파일에 우클릭 > show in explorer를 통해 윈도우 탐색기를 열 수 있다.

    image
    image
    image


  • 한줄 더 추가하고 싶다면, 또 밑에다가 f.write를 해주면 된다.
    *하지만 자동으로 줄바꿈이 되지 않는다. -> 위에 문자열 마지막에 \n를 통해 작성한 뒤 한 줄 바꿔주자.
    * 실행시킬 때 마다 덮어쓰기가 되는 것 같다.
    image
    image
    imageimage


  • 한글을 출력시켜보자.
    - 한글이 깨지면서 인코딩문제가 생긴다. 컴퓨터는 한글을 모르기 때문이다. but 실제 txt파일은 잘 열린다.
    image
    image
    image


  • 위와 같은 문제가 생기는 이유는
    Pycharm은 기본적으로 UTF-8로 인코딩 되어있는데, 우리가 생성한 문서txt는 UTF-8로 인코딩되어있지 않아서 문제가 생기는 것.
    * 첫번째, 파일을 열 때, ( '파일명', '모드',   에 이어서 encoding 인자를 지정해준다)
    *마치 default인자처럼, 파이참이 기본적으로 다른 인코딩으로 되어있는 것을 강제로 UTF-8을 default로 지정해주는 것이다.
    image
    image


CSV 파일 쓰기

CSV : COMMA SEPARATED VALUES 로서,

  1. 변수에 대입하면서, open()열고 파일명' ~.csv' + 모드'w' + encoding='utp-8'
    * csv는 utf-8인코딩하면, 엑셀에서 깨진다. 지워야한다.
  2. write시 마찬가지로, 문자열 안에서, 콤마로 나누어준다.
  3. close로 닫는다.


  • txt와 마찬가지지만, 파일확장자만 txt -> csv로 바뀌었다. 그리고 입력시 문자열처럼 입력하면서, 콤마로 values들을 나눈다.
    - txt파일과 마찬가지로, 위쪽문장 끝에, \n을 해줘야 줄바꿈이 된다.
    image
    image


    image
    image



만두가게 임금계산 프로그램을 파일로 저장해보자.

mandoo_wage_txt_csv_generator.py


지난번 mandoo_wage.py의 함수 및 소스코드를 복사해온다.
긴 문장 은 -> txt파일로 저장
짧은 문장은 -> csv파일로 저장할 것이다.
image

  • 먼저 긴문장이 출력되는 for문에서  txt파일을 쓰는 과정을  적어보자(위에서 한 것 참고)
    1. for문이 시작되기 전에, txt파일을 연다.
    2. for문안에 print()로 출력된 부분을  f.write(  + \n줄바꿈 )로 바꿔주기
    만 하면 된다.
    * print는 자동으로 줄바꿈 해주는 것 같다.
    3. for문이 끝나고 f.close()를 통해 txt파일을 닫아준다.
    image
    image
    image

  • 아래 짧은 문장을 csv로 써보자. 마찬가지의 과정이다.
    1. for문 전에 open시, 파일명만 제대로 바꾸자.
      *csv파일은 open()시 3번째 인자에서, utf-8인코딩하면, 파이참에서는 잘보이지만, 엑셀에서 깨진다.!! ----> 하지마라
    2. print대신 csv_file.write('  ,  ,  , ')할 때, 정보들을 콤마로 벌려주자.
    3. for문 끝나고, close해준다.
    image
    image
    image
    image
    image


  • 엑셀에서는 '시간',이나 '원'을 사용하지않으므로 빼준다. 그리고 엑셀 맨 윗줄에 칼럼명을 넣으면 좋을 것 같다.
    for문을 돌기전에, csv_file.write칼럼명 3개를 미리 써놓으면 된다. + 줄바꿈도 빼먹으면 안된다.
    image
    image

  • 이제 여기에, 출근시간/퇴근시간도 추가해서 출력해보자.
    칼럼명에서 추가 /  write()에서 {}추가 /  format에서 인자 추가 작업을 해주면 된다.
    image
    image

  • 파이썬으로 쓴 csv파일에 대해서 엑셀 함수를 적용하고 싶다면
    [ 다른이름으로 저장-> 엑셀 통합문서로 저장 ] 하고 난 뒤, 사용하면 된다.

+ Recent posts