使用文件作为子进程的标准输入和标准输出
Posted
技术标签:
【中文标题】使用文件作为子进程的标准输入和标准输出【英文标题】:Using files as stdin and stdout for subprocess 【发布时间】:2013-02-16 12:53:03 【问题描述】:如何使用 python 子进程模块复制以下批处理命令?
myprogram < myinput.in > myoutput.out
换句话说,如何使用myinput.in
的内容作为标准输入和myoutput.out
作为标准输出来运行myprogram
?
【问题讨论】:
【参考方案1】:以下应该有效:
myinput = open('myinput.in')
myoutput = open('myoutput.out', 'w')
p = subprocess.Popen('myprogram.exe', stdin=myinput, stdout=myoutput)
p.wait()
myoutput.flush()
【讨论】:
这看起来很接近我的需要。如何检测是否发生错误? 没关系。 stderr=subprocess.PIPE,那么,如果 stderr: 打印错误myoutput = open('myoutput.out'. 'w')
行中的参数应该用,
分隔,而不是.
虽然这个答案仍然正确,但请注意 Python 3.5 中添加的 subprocess.run()
对于大多数 subprocess
用例来说是一个更好的 API。它同样采用 stdin
和 stdout
关键字参数。以上是关于使用文件作为子进程的标准输入和标准输出的主要内容,如果未能解决你的问题,请参考以下文章