在Python中如何将字符串传递给可执行文件stdin?

时间:2012-07-20 00:52:10

标签: python windows subprocess pipe

在Windows上我有一个从stdin读取的程序(prog.exe)。在python中我想管道一个字符串作为其stdin的输入。怎么做?

类似的东西:

subprocess.check_output("echo {0} | myprog.exe".format(mystring)) 

或(使args成为列表)

subprocess.check_output("echo {0} | myprog.exe".format(mystring).split())

似乎不起作用。它给了我:

WindowsError: [Error 2] The system cannot find the file specified

我还尝试使用StringIO的“stdin”关键字arg(这是一个类似文件的对象)

subprocess.check_output(["myprog.exe"], stdin=StringIO(mystring))

仍然没有运气 - check_output不适用于StringIO。

1 个答案:

答案 0 :(得分:5)

您应该使用Popen communicate方法(docs)。

proc = subprocess.Popen(["myprog.exe"], stdin=subprocess.PIPE)
stdout, stderr = proc.communicate('my input')