2011-02-04 38 views
9

Cách tốt nhất để thực thi một loạt mã python, như exec mycode và nắm bắt mọi thứ mà nó in ra thành chuỗi không?Thực hiện một khối mã python với exec, bắt tất cả đầu ra của nó?

+4

Hãy nhìn vào câu trả lời này. http://stackoverflow.com/questions/3906232/python-get-the-print-output-in-an-exec-statement/3906390#3906390 Nó thay thế stdout cho thời gian thực hiện. –

+0

@Reiner: Mặc dù câu hỏi này được diễn đạt tốt hơn, nhưng về cơ bản nó là một sự lừa đảo của câu hỏi đó (và câu hỏi đó có một câu trả lời tuyệt vời!). Điều này có nên được đóng lại và chỉ ra điều đó không? – Gerrat

+0

ah tôi đã nghĩ đến việc làm một cái gì đó như thế rồi quyết định nó sẽ không hoạt động vì một lý do nào đó, nhưng tôi đoán là không! – Claudiu

Trả lời

11

Hãy thử thay thế sys.stdout mặc định, như trong đoạn này:

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() 
Các vấn đề liên quan