我想用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
答案 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