あなたの関数は印刷するだけのようです。したがって、それを変更する必要があります。それができない場合は、stdout
一時的にリダイレクトする必要があります。
import cStringIO
import sys
buf = cStringIO.StringIO()
sys.stdout = buf
*do your printing calls*
sys.stdout = sys.__stdout__
output = buf.getvalue()
# This is now a string with all the output.
print output.replace('\n', ' ') # Output it with line breaks replaced with spaces.
そのようなことをもっと頻繁に行うと、次のことができます
import contextlib
@contextlib.contextmanager
def redir_stdout(temptarget):
import sys
try:
t = sys.stdout
sys.stdout = temptarget
yield None
finally:
sys.stdout = t
その後
import cStringIO
buf = cStringIO.StringIO()
with redir_stdout(buf):
*do your printing calls*
output = buf.getvalue()
# This is now a string with all the output.