将文件用作stdin和stdout用于子进程

Nol*_*der 23 python stdin subprocess stdout

如何使用python子进程模块复制以下批处理命令?

myprogram < myinput.in > myoutput.out
Run Code Online (Sandbox Code Playgroud)

换句话说,如何myprogram使用myinput.in标准输入和myoutput.out标准输出的内容运行?

Elm*_*ise 35

以下应该有效:

myinput = open('myinput.in')
myoutput = open('myoutput.out', 'w')
p = subprocess.Popen('myprogram.exe', stdin=myinput, stdout=myoutput)
p.wait()
myoutput.flush()
Run Code Online (Sandbox Code Playgroud)

  • 虽然此答案仍然正确,但请注意,Python 3.5 中添加的 [`subprocess.run()`](https://docs.python.org/3/library/subprocess.html#subprocess.run) 是更好的 API对于大多数“子流程”用例。它同样采用 `stdin` 和 `stdout` 关键字参数。 (2认同)