2013-11-27 5 views
1

여러 print 문이있는 python 스크립트를 작성합니다. 인쇄 된 정보는 스크립트의 진행 상태를 모니터하는 데 도움이 될 수 있습니다. 그러나 python my_script &> output을 포함하는 bash 스크립트를 컴퓨팅 노드에 할당하면 스크립트가 실행 중이고 인쇄 중일 때도 출력 파일에 아무 것도 포함되지 않습니다. 스크립트가 완료되면 출력 파일에 출력이 포함됩니다. 그렇다면 스크립트가 실행 중일 때 출력 파일을 통해 실시간으로 출력을 얻으려면 어떻게해야합니까?스크립트 완료 전에 출력 파일에 아무것도 포함되어 있지 않습니다.

+0

http://mywiki.wooledge.org/BashFAQ/009 – tripleee

답변

4

실제로는 파이핑보다는 파일에 쓰고 각 쓰기 후에 또는 각 쓰기 호출 후에 sys.stdout.flush()을 호출하지만 로그 작성 기능을 사용하고 로그로 인쇄하는 것이 더 좋습니다.

올린 사람 : 로거 기능은 텍스트 대신 어딘가에 출력하고 다른 정보를 출력 할 수있는 print 대신 호출하는 기능으로 보통 stdout 및 파일을 비롯한 다양한 대상에 다양한 정보를 출력 할 수 있습니다 . 로깅 기능에 내장 된 비단뱀에 대한 정보는 python 2 또는 3 문서를 참조하십시오.

+0

안녕하세요, Steve, 답장을 보내 주셔서 감사합니다. 하지만 로거 기능 부분을 이해하지 못합니다. 로거 기능이란 무엇입니까? – Negelis

+1

로거 기능은 print 대신 print 함수를 사용하여 텍스트 어딘가에 출력 할 수 있습니다. 타임 스탬프가 적용될 수 있으며 다른 정보로는 보통 stdout 및 파일을 비롯한 다양한 대상에 다양한 양의 정보를 출력 할 수 있습니다. 로깅에서 비단뱀 빌드에 대한 자세한 내용은 http://docs.python.org/2/library/logging.html 또는 http://docs.python.org/3.3/library/logging.html을 참조하십시오. –

0

나는 sys.stderr에 데이터를 쓰고 싶을 때도 있습니다. 너무 많이 플러시 할 필요가 없습니다. 그러나 파이핑 출력을 생성하는 경우 sys.stdout을 사용하는 것이 좋습니다.

관련 문제