Вызов скрипта Python из подпроцесса не выводится
У меня есть код в двух средах, Windows-машина с виртуальной машиной Linux. Я пытаюсь создать сценарий, который создает код на стороне Windows с помощью сценария, buildWindows.py
, запустить на стороне Linux.
У меня есть сценарий SSH на стороне Windows, а затем запустить скрипт Python Builder windowsBuilder.py
,
У меня проблема в том, что скрипту Python Builder на стороне Windows требуется некоторое время для запуска, и ничего не распечатывается до завершения программы. Есть ли способ распечатать выходные данные во время работы скрипта, а не когда он закончится?
Я предполагаю, что у меня возникла эта проблема, потому что когда вы вызываете скрипт Python, он открывает новую среду Python и возвращает информацию только после завершения среды Python.
вызов подпроцесса в buildWindows.py
:
COMMAND = "cd C:/codeLocation/; python windowsBuilder.py"
ssh = subprocess.Popen(["ssh", "%s" % IP_ADDRESS, COMMAND],
shell=False,
stdout=subprocess.PIPE)
for line in iter(ssh.stdout.readline, ''):
sys.stdout.write(line)
1 ответ
Отключить буферизацию: bufsize=0
параметр передан для вызова
ssh = subprocess.call(["ssh", "%s" % IP_ADDRESS, COMMAND],
shell=False,
stdout=subprocess.PIPE,
bufsize=0)