2011-02-04 12 views
9

Qual è un buon modo per eseguire una serie di codice Python, come exec mycode, e catturare tutto ciò che stampa su stdout in una stringa?Esegui un blocco di codice Python con exec, catturando tutto il suo output?

+4

Date un'occhiata a questa risposta. http://stackoverflow.com/questions/3906232/python-get-the-print-output-in-an-exec-statement/3906390#3906390 Sta sostituendo stdout per il tempo di esecuzione. –

+0

@Reiner: Sebbene questa domanda sia formulata in modo migliore, è fondamentalmente un doppio di quello (e quella ha una risposta fantastica!). Dovrebbe essere chiuso e puntato a quello? – Gerrat

+0

ah ho pensato di fare qualcosa del genere quindi ho deciso che non avrebbe funzionato per qualche motivo, ma credo di no! – Claudiu

risposta

11

Provare a sostituire lo sys.stdout di default, come in questo frammento:

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() 
Problemi correlati