giả sử có một tập lệnh làm điều gì đó như thế này:
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
Bây giờ, giả sử tôi muốn nắm bắt đầu ra của write
hàm và lưu trữ nó trong một biến để xử lý thêm. Giải pháp ngây thơ là:
# module mymodule.py
from writer import write
out = write()
print out.upper()
Nhưng điều này không hiệu quả. Tôi đưa ra một giải pháp khác và nó hoạt động, nhưng xin vui lòng cho tôi biết nếu có cách nào tốt hơn để giải quyết vấn đề. Cảm ơn
import sys
from cStringIO import StringIO
# setup the environment
backup = sys.stdout
# ####
sys.stdout = StringIO() # capture output
write()
out = sys.stdout.getvalue() # release output
# ####
sys.stdout.close() # close the stream
sys.stdout = backup # restore original stdout
print out.upper() # post processing