如何将字符串用作stdin

dan*_*mai 8 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()
Run Code Online (Sandbox Code Playgroud)

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

非常感谢!

Ign*_*ams 12

暂时替换sys.stdinStringIOcStringIO使用所需的字符串.

>>> 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!'
Run Code Online (Sandbox Code Playgroud)

  • 注意,在Python2中,这需要[`import StringIO`](https://docs.python.org/2/library/stringio.html),在Python3中,这需要[`import io`](https://stackoverflow.com/ a/18284900/4080966)。 (2认同)