파이썬_실전 프로젝트

출력결과 파일로 저장하기

방법 1. 파이썬3 명령어

출력된 결과가 많거나, 결과물의 텍스트 파일이 필요할때, 출력 결과를 텍스트 파일로 저장할수도 있습니다. 

import sys
sys.stdout = open('output.txt','w')

print('hello !!!')

이렇게 하면, 화면에 "hello !!!" 가 출력이 되는것이 아니고, output.txt 파일이 생성되고, 그 안에 출력문이 기록됩니다.

 

이어쓰기

파일에 덮어쓰지 않고, 이어쓰는 경우 'w' 옵션 대신, 'a' 옵션을 주면 됩니다.

open('output.txt','w')

 

경로 설정하기
open('folder/output.txt','w')

하위폴더를 지정할려면, 폴더 이름을 같이 써주시고, 다른 경로에 있으면, /(루트) 이하의 전체경로를 써주셔야 합니다.

 

 

방법 2. 명령 프롬프트

 sys 라이브러리를 사용하지 않고 터미널상에서 파일로 저장하는 방법입니다.

print('hello !!!')
print('test 2')

위와 같은 간단한 코드가 있다고 할때

python test.py > output.txt

 '>'  이 기호 뒤에 출력파일 이름을 정해주면, 코드의 결과가 파일로 기록됩니다.

 

이어쓰기
python test.py >> output.txt

'>>' 이 기호 두개를 사용하면, 출력파일이 이미 존재할경우, 덮어쓰지 않고, 내용의 끝에 이어서 기록해줍니다. 

 

경로 설정하기
python test.py > folder/output.txt

역시 하위폴더에 저장할때 폴더 이름을 같이 써주시면 됩니다. 폴더 이름에 공백이 있을경우 폴더명 전체를 따옴표로 감싸주거나, 공백마다 역슬래쉬\(탈출문자)를 붙여주면 됩니다.

python test.py > "some folder"/output.txt
python test.py > "some folder/output.txt"
python test.py > some\ folder/output.txt

(탈출문자 방법의 경우, 윈도우 시스템에선 다를수 있습니다. 요건 테스트 해보고 업데이트 하겠습니다.)

댓글

댓글 본문
  1. 이준규
    안녕하세요 주피터 환경에서 위와 같이 했다가 이후 주피터노트북상에서 print가 안되는 문제가 발생했는데 어떻게 해결해야하는지 알려주실수있나요?
  2. nomadlife
    리스트 타입 변수를 말씀하시는건가요?
    a=[] # 리스트 변수 선언
    for i in range(1,5):
    a.append(i) # 데이터 차례대로 추가 (들여쓰기해주세요)

    print(a)
    [1,2,3,4]

    사용시에는 a[0].a[1].a[2],a[3] 이렇게 사용하시면 됩니다.
    리스트외에도 튜플, 딕셔너리, 셋 같은게 자주 쓰이니, 이 4개는 꼭 찾아보세요.
    대화보기
    • Kjj Lpn
      좋은 강의 고맙게 읽고 있습니다.
      한가지만 여쭤보겠습니다.

      for i in range(1, 5):
      print(i)
      1
      2
      3
      4

      여기시
      출력 결과물을 모두다 한개의 변수에 반환하려면 어떻게 해야 되는지 꼭 좀 부탁 드립니다.

      다시 한번 감사드립니다.
      석이가
    • nomadlife
      선택적으로 출력을 하고 싶을땐 sys대신 아래처럼 해보세요.

      file = open('output.txt','a')

      for ....:
      if .... :
      file.write("조건에 맞았습니다. \n")

      file.close()

      이전 토픽에 있는 파일 불러오기와 비슷한 형식입니다.
      이 내용도 본문에 업데이트 해 놓도록 할게요.
      더 자세한 사용법은 여기( https://wikidocs.net/16077 ) 를 참고해보세요.
      대화보기
      • 나그네
        특정한 결과값만 저장하려고 할때 어떻게 하면 될까요?

        예제)
        import sys
        sys.stdout = open('output.txt','w')


        반복문 for
        .
        print('hello !!!')
        print('hello !!!')
        print('hello !!!').
        .
        . 중략

        if .............
        print(A, " 조건에 맞았습니다")

        A값과 "조건에 맞았습니다" 라는 Print문만 저장해보고 싶습니다.
      • nomadlife
        설명이 부족한거 같아서, 본분내용을 좀 수정했습니다. 혹시 그래도 안되시면 다시 알려주세요.
        대화보기
        • ㅇㅇㅇ
          입력이안되는데요? 파이썬명령어 뭘또추가해야하는지
        • nomadlife
          본문에 업데이트 했으니 참고하세요 ~
          대화보기
          • comments
            저장되는 파일의 위치를 따로 설정할 수 있는 방법이 있나요?
          • nomadlife
            혹시 pandas 사용중이신가요? 여기 비슷한질문 올리신분이 계시네요, https://stackoverflow.com......oks 한번 참고해보세요.
            대화보기
            • soobahkin
              결과가 아래와 같이 나옵니다.


              그러나 중간에 " ... " 이렇게 나오는데 전부 결과를 보는 방법은 없을까요?


              -----------------------------------------------------------------------------------------------------

              21 100
              22 0
              23 3
              24 0
              25 0
              26 0
              27 0
              28 52
              29 109
              ...
              2663 0
              2664 2
              2665 16
              2666 6
              2667 0
              2668 1
              2669 10
            • nomadlife
              혹시 에디터가 주피터 노트북이시면 결과셀 좌측에보시면 클릭할수 있는 부분있어요. 그부분 클릭하시면 창크기를 늘렸다 줄였다 하실수 있어요.
              대화보기
              • soobahk
                결과값이 많을 때 축약해서 결과가 나오는데 결과를 전부 볼 수 있는 방법은 없나요?
              • nomadlife
                네 그럼요. 언제든지 남기셔도 괜찮습니다.
                대화보기
                • johnmiles
                  정말정말정말 감사합니다.
                  진심진심진심 감사합니다.
                  해결되었습니다 정말 감사합니다.

                  한가지 추가적인 질문이있는데
                  허락해주신다면 질문을 남기고 싶습니다.

                  정말정말 감사합니다.