Выполнить блок кода Python с exec, захватывая весь его вывод? - PullRequest
9 голосов
/ 05 февраля 2011

Каков хороший способ выполнить набор кода Python, например exec mycode, и записать все, что он печатает, на стандартный вывод в строку?

1 Ответ

11 голосов
/ 05 февраля 2011

Попробуйте заменить 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()
...