Извините программу несколько раз подряд в одной консоли - PullRequest
0 голосов
/ 04 июля 2018

Я хочу выполнить программу несколько раз в цикле с аргументом 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 голосов
/ 04 июля 2018

В этом случае вам следует установить параметр shell=True. Вот пример:

Скажем, вы хотите запустить foo 10 раз от bar:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...