将文件用作标准输入和标准输出进行子流程

问题描述:

如何使用python子流程模块复制以下批处理命令?将文件用作标准输入和标准输出进行子流程

myprogram <myinput.in> myoutput.out 

换句话说,我怎么使用myinput.in内容作为标准输入和myoutput.out作为标准输出运行myprogram

下面应该工作:

myinput = open('myinput.in') 
myoutput = open('myoutput.out', 'w') 
p = subprocess.Popen('myprogram.exe', stdin=myinput, stdout=myoutput) 
p.wait() 
myoutput.flush() 
+0

这看起来接近我所需要的。如何检测错误是否发生? – 2013-10-15 16:36:26

+0

没关系。 stderr = subprocess.PIPE,那么,如果stderr:print error – 2013-10-15 16:41:52

+0

在'myoutput = open('myoutput.out'。'w')这行''参数应该用','分隔,而不是''' – flagg19 2015-01-27 11:05:21

打开一个文件的子进程。这是一个阻塞呼叫。所以控制不会进入下一行,直到文件打开。

ss=subprocess.Popen(FileName,shell=True) 
ss.communicate()