2013-01-20 2 views
3

내 스크립트의 일부가 다른 모듈 (다른 누군가가 오래 전에 작성한 것으로, 지금 수정을 시작하고 싶지는 않음)에서 함수 (즉, foo)를 호출합니다.
foo은 부분적으로 다른 기능을 호출하여 stdout (그러나 None을 반환)에게 흥미로운 것을 씁니다. foostdout에 쓰는 흥미로운 것들에 접근하고 싶습니다.함수 호출의 인쇄 된 출력에 액세스

내가 아는 한, subprocess은 일반적으로 명령 줄에서 호출하는 명령을 호출하기위한 것입니다. 내 스크립트에서 호출 할 파이썬 함수에 상응하는 것이 있습니까?

이 @JimDeville은 주석으로

+0

모르겠어요 파이썬 물론 충분하지만 Ruby에서는 stdout을 내가 제어하는 ​​버퍼로 변경하고 함수를 호출하고 stdout을 복원 한 다음 필요에 따라 버퍼에서 데이터를 조작하여이 작업을 수행합니다. –

답변

4

을 중요한 경우 내가 python2.7에있어, 당신은 교환 할 수 표준 출력 :

#!python2.7 
import io 
import sys 
f=io.BytesIO() 

def foo(): 
    print 'hello, world!' 

save,sys.stdout = sys.stdout,f 
foo() 
sys.stdout = save 
f.seek(0) 
print f.read() 

출력 :

hello, world! 
+0

python 2.7에 해당하는 기능이 있습니까? 아니면이 기능이 기본적으로 작동합니까? – inspectorG4dget

+0

방금 ​​알아 챘습니다. 2.7 용으로 업데이트되었습니다. 대신에 BytesIO가 필요하고, <2.7로 동작하는 오래된 StringIO.StringIO가 필요합니다. –

+0

고맙습니다. 그것은 작동합니다! – inspectorG4dget