2014-11-10 2 views
2

콘솔에서 정상적으로 실행되는 python 스크립트 (.py)가 있습니다. 확장자를 (.pyw)로 변경하여 pythonw를 사용하여 스크립트를 실행하면 작동이 멈췄습니다. 내 생각 엔 print 문이 Google 검색에서 반환 된 결과를 기반으로 pythonw가 종료되는 것입니다.pythonw를 실행할 수 있도록 print 문을 편리하게 비활성화하는 방법은 무엇입니까?

pythonw를 실행할 수 있도록 print 문을 비활성화하는 편리한 방법이 있습니까? 스크립트에 너무 많은 print 문이 있습니다. 하나씩 차례대로 변경하는 것은 실용적이지 않습니다. 특히 일반 파이썬 사용으로 다시 전환하고 싶다면 더욱 그렇습니다.

감사합니다.

+0

저는 pythonw에 대해 아무런 단서도 없지만, null로 인쇄하려는 것처럼 들리므로 효과적으로이 질문을 복제합니다. http://stackoverflow.com/questions/6735917/redirecting-stdout-to-nothing-in-python – Leon

+0

''내 생각에 print 문이 파이썬을 죽게 만든다 "- 아니, 내 빠른 테스트의 경우. –

답변

2

out 등 자신의 인쇄 기능을 만든 다음 printout으로 변경하십시오. 그런 다음 out 메소드를 한 번 변경하여 콘솔이나 파일로 출력 할 수 있습니다.

+0

print를 호출하는 라이브러리 함수를 사용하는 경우 어떻게이 솔루션을 사용할 수 있습니까? – romnempire

1

나를 위해 잘 작동하는 다른 StackOverflow 스레드의 응답을 발견했습니다. 나는 대답을 upvoted있다. 신용은 제 것이 아닙니다. 당신이 upvote 싶다면, 그 링크로 가서 upvote. 아래 링크를 참조하십시오.

Can I get the output of "print" statement in pythonw?

당신은 세계적으로 sys.stdout에 할당하여 표준 출력 리디렉션 할 수 있습니다 :

import sys sys.stdout = open("mylog.txt", "w")

그런 다음 인쇄 문구를 포함한 프로그램의 표준 출력, 나머지는, mylog.txt로 이동합니다.

0

모든 출력을/dev/null로 리디렉션합니다. 파이썬은 이것을 행하는 플랫폼에 의존하지 않습니다.

import os 
import sys 

# Only redirect for pythonw not regular python. 
if os.path.splitext(os.path.basename(sys.executable))[0] == 'pythonw': 
    sys.stdout = open(os.devnull, 'w') 
    sys.stderr = open(os.devnull, 'w') 
관련 문제