モチベーション
外部ライブラリがprintをしてくるとき,それを文字列として受け取りたいことがあった.
方法
contextlib.redirect_stdoutを使ってio.StringIOに標準出力をつなぎ変えてしまえばよい
https://docs.python.jp/3/library/contextlib.html
import io
from contextlib import redirect_stdout
f = io.StringIO()
with redirect_stdout(f):
print("hoge")
print("huga")
f.getvalue()
>>> 'hoge\nhuga\n'
標準入力を全て繋ぎ変えてしまっている点は注意.