我一直在用一个看似简单的Python问题疯狂:我想调用一个使用raw_input()和input()的函数,并以某种方式在程序中提供一个字符串。我一直在搜索,发现子进程可以将stdin和stdout更改为PIPE;但是,我不能使用子进程来调用函数。这是一个例子:
def test():
a = raw_input("Type something: ")
return a
if __name__=='__main__':
string = "Hello World" # I want to a in test() to be Hello World
returnValue = test()
当然这比我想要完成的要简单得多,但基本思路非常相似。
非常感谢!
答案 0 :(得分:12)
暂时使用sys.stdin
或StringIO
替换cStringIO
所需的字符串。
>>> s = StringIO.StringIO('Hello, world!')
>>> sys.stdin = s ; r = raw_input('What you say?\n') ; sys.stdin = sys.__stdin__
What you say?
>>> r
'Hello, world!'