9
exec mycode
のような、たくさんのPythonコードをexecして、stdoutに出力するすべての文字列を文字列にキャプチャするにはどうすればよいでしょうか?すべての出力をキャプチャして、execでPythonコードのブロックを実行しますか?
exec mycode
のような、たくさんのPythonコードをexecして、stdoutに出力するすべての文字列を文字列にキャプチャするにはどうすればよいでしょうか?すべての出力をキャプチャして、execでPythonコードのブロックを実行しますか?
は、このスニペットのように、デフォルトのsys.stdoutのを交換してみてください:
import sys
from StringIO import StringIO
buffer = StringIO()
sys.stdout = buffer
exec "print 'Hello, World!'"
#remember to restore the original stdout!
sys.stdout = sys.__stdout__
print buffer.getvalue()
この回答を見てください。 http://stackoverflow.com/questions/3906232/python-get-the-print-output-in-an-exec-statement/3906390#3906390実行時にstdoutを置き換えます。 –
@Reiner:この質問はよりよく言い表せますが、基本的にはその質問のdupです(それは素晴らしい回答です)。これは閉じて、それを指すべきでしょうか? – Gerrat
ああ、私はそれが何らかの理由で仕事をしないと決めたようなことをすると思ったが、私はそうは思わない! – Claudiu