1

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

就像是:

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

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

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

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

4

1 回答 1

7

您应该使用 Popencommunicate方法(docs)。

proc = subprocess.Popen(["myprog.exe"], stdin=subprocess.PIPE)
stdout, stderr = proc.communicate('my input')
于 2012-07-20T00:58:20.253 回答