我想在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