随后在同一控制台中多次执行程序

时间:2018-07-04 07:35:41

标签: python process

我想用diffrenet参数eveytime循环执行一个程序多次,但要避免每次都打开新的coonsole窗口。
我尝试了os.system()Popen,但没有成功。

我尝试过的例子:

from subprocess import Popen, PIPE

for i in range(10):
    process = Popen("myProgram.exe i", shell=False,stdin=PIPE,stdout=PIPE,stderr=PIPE)

还尝试使用& ; pause

1 个答案:

答案 0 :(得分:0)

在这种情况下,您应该设置参数shell=True。这是一个示例:

假设您要从foo运行bar 10次:

foo.py

import sys

with open("result.txt", "a") as f:
    print("debug")
    f.write(sys.argv[1])

bar.py

import subprocess

for i in range(10):
    CMD = "python foo.py %s" % i
    p = subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE))
    print(p.stdout.read().decode('utf-8'))

运行python bar.py后,我们得到文件:

result.txt

1
2
3
4
5
6
7
8
9
10

标准输出

debug

debug

debug

...

debug