我有这个里面的py文件:
from subprocess import Popen program = "path to program.exe" file = "path to file used by program.exe" p = Popen([program, file]) print p.stdout.read()
当我这样做的时候:
C:\>python file.py
在cmd我得到了
#output #.... #... more output C:\:>#...more output #.... #...here finishes output
为什么出现“ C:\>
”? 是否因为Popen为了运行我给予的命令而需要创build一个新的进程?
提前致谢
PD:使用windows server 2008 python 2.7.5
python脚本在启动过程后结束,并且提示符返回(打印C:\>
)。 但子进程仍在运行,其stdout和stderr默认在控制台中写入,如果没有重定向,它将继续输出并写入返回的提示。
你可能想要做的就是先等待子进程结束
subprocess.call([program, file])
(如果您只是打印标准输出,则不需要执行任何操作,因为这是默认设置。)
如果你确实需要访问标准输出,重定向标准输出并使用通信。
p = subprocess.Popen([program, file], stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = p.communicate() print stdout