2011-02-04 10 views
9

पाइथन कोड का एक गुच्छा निष्पादित करने का एक अच्छा तरीका क्या है, जैसे exec mycode, और स्ट्रिंग में stdout करने के लिए प्रिंट करता है सब कुछ कैप्चर करें?निष्पादन के साथ अजगर कोड के एक ब्लॉक निष्पादित, अपने सभी आउटपुट कैप्चरिंग?

+4

इस जवाब पर एक नज़र डालें। http://stackoverflow.com/questions/3906232/python-get-the-print-output-in-an-exec-statement/3906390#3906390 यह निष्पादन के समय के लिए stdout को प्रतिस्थापित कर रहा है। –

+0

@Reiner: हालांकि इस सवाल को बेहतर कहा गया है, यह मूल रूप से उस पर एक डुप्लिकेट है (और उसमें एक शानदार जवाब है!)। क्या इसे बंद किया जाना चाहिए और उस पर ध्यान देना चाहिए? – 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() 
संबंधित मुद्दे