【发布时间】:2013-10-02 07:51:53
【问题描述】:
有没有办法在程序内部做类似sys.stdin.write("text")的事情,来模拟用户输入的文本,
而不是使用input() 或等价物并等待用户输入内容?
我之所以问,是因为我的程序中有一个我无法修复的错误,该错误是昨天发布的,但到目前为止还没有答案,这是我最后的选择。
(Windows XP,Python3.3)
谢谢。
【问题讨论】:
有没有办法在程序内部做类似sys.stdin.write("text")的事情,来模拟用户输入的文本,
而不是使用input() 或等价物并等待用户输入内容?
我之所以问,是因为我的程序中有一个我无法修复的错误,该错误是昨天发布的,但到目前为止还没有答案,这是我最后的选择。
(Windows XP,Python3.3)
谢谢。
【问题讨论】:
有多种技巧可以实现这一点,例如
from io import StringIO
import sys
sys.stdin = StringIO("user says hello!")
这应该可以跨模块工作。同样,您可以将sys.stdin 替换为附加到一系列预设用户输入的流。
【讨论】:
sys.stdin,实际上是重定向它。 StringIO 是一种特殊类型的伪文件,从字符串中读取。