如何将字符串用作stdin

时间:2011-02-21 06:12:15

标签: python

我一直在用一个看似简单的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()

当然这比我想要完成的要简单得多,但基本思路非常相似。

非常感谢!

1 个答案:

答案 0 :(得分:12)

暂时使用sys.stdinStringIO替换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!'