สมมติว่ามีสคริปต์ที่ทำสิ่งนี้:
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
ตอนนี้สมมติว่าฉันต้องการจับเอาต์พุตของwrite
ฟังก์ชันและเก็บไว้ในตัวแปรเพื่อประมวลผลต่อไป วิธีแก้ปัญหาที่ไร้เดียงสาคือ:
# module mymodule.py
from writer import write
out = write()
print out.upper()
แต่ไม่ได้ผล ฉันคิดวิธีแก้ปัญหาอื่นและได้ผล แต่โปรดแจ้งให้เราทราบหากมีวิธีที่ดีกว่าในการแก้ปัญหา ขอบคุณ
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