2011-02-04 11 views
9

Jaki jest dobry sposób na wykonanie kodu Pythona, na przykład exec mycode, i przechwycenie wszystkiego, co zostanie wydrukowane na standardowe wyjście w ciągu znaków?Wykonywanie bloku kodu Pythona z exec, przechwytywanie wszystkich jego danych wyjściowych?

+4

Wystarczy popatrzeć na to odpowiedź. http://stackoverflow.com/questions/3906232/python-get-the-print-output-in-an-exec-statement/3906390#3906390 Zastępuje standardowe wyjście dla czasu wykonania. –

+0

@Reiner: Chociaż to pytanie jest lepiej sformułowane, jest to w zasadzie duplikat tego (i ten ma fantastyczną odpowiedź!). Czy należy to zamknąć i wskazać na to? – Gerrat

+0

ah myślałem o zrobieniu czegoś takiego, potem zdecydowałem, że nie zadziała z jakiegoś powodu, ale chyba nie! – Claudiu

Odpowiedz

11

Spróbuj zastąpić domyślny sys.stdout, jak w tym fragmencie:

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() 
Powiązane problemy