2011-02-04 10 views
9

exec mycodeのような、たくさんのPythonコードをexecして、stdoutに出力するすべての文字列を文字列にキャプチャするにはどうすればよいでしょうか?すべての出力をキャプチャして、execでPythonコードのブロックを実行しますか?

+4

この回答を見てください。 http://stackoverflow.com/questions/3906232/python-get-the-print-output-in-an-exec-statement/3906390#3906390実行時にstdoutを置き換えます。 –

+0

@Reiner:この質問はよりよく言い表せますが、基本的にはその質問のdupです(それは素晴らしい回答です)。これは閉じて、それを指すべきでしょうか? – Gerrat

+0

ああ、私はそれが何らかの理由で仕事をしないと決めたようなことをすると思ったが、私はそうは思わない! – Claudiu

答えて

11

は、このスニペットのように、デフォルトの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() 
関連する問題