다음과 같은 스크립트가 있다고 가정합니다.
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
이제 write
함수 의 출력을 캡처하고 추가 처리를 위해 변수에 저장 한다고 가정 합니다. 순진한 해결책은 다음과 같습니다.
# module mymodule.py
from writer import write
out = write()
print out.upper()
그러나 이것은 작동하지 않습니다. 다른 해결책을 생각 해냈고 작동하지만 문제를 해결하는 더 좋은 방법이 있는지 알려주세요. 감사
import sys
from cStringIO import StringIO
# setup the environment
backup = sys.stdout
# ####
sys.stdout = StringIO() # capture output
write()
out = sys.stdout.getvalue() # release output
# ####
sys.stdout.close() # close the stream
sys.stdout = backup # restore original stdout
print out.upper() # post processing