我想在Python中以下內容。自定義標準輸出和標準輸入寫入和讀取數據在同一模塊 - Python
方法1將輸出寫入方法2讀取的自定義標準輸出(StringIO)。該代碼是這樣
import sys
from StringIO import StringIO
stringIOObj = StringIO()
default_stdout = sys.stdout
default_stdin = sys.stdin
sys.stdout = stringIOObj
sys.stdin = stringIOObj
def method1_write():
sys.stdout.write("Hello World\n")
sys.stdout.write("\n") #End of line
sys.stdout.flush()
def method2_read():
sys.stdout = default_stdout
for line in sys.stdin:
print line
if __name__ == "__main__":
method1_write()
method2_read()
sys.stdin = default_stdin
的目標有兩個方法來通過自定義標準輸出和標準輸入通信。我可以通過其他方式解決這個問題,但我試圖通過在同一模塊中使用writer和reader方法來消除少數命令行管道。
在這種情況下,沒有輸出寫入
>>>
>>>
不知道什麼時候就沒有拋出,以及錯誤有什麼不對這種方法。
這是清潔。我將使用Context Manager來解決這些問題。 – sysuser
@sysuser如果你使用Python 3,'print'函數需要一個'file'關鍵字參數,讓你用print打印這個文件。您可以使用Python 2中的from __future__ import print_function'獲取該函數。 –
謝謝,這將使我的任務更輕鬆。 – sysuser