Я пытаюсь выполнить сценарий оболочки из python, а также перехватить вывод.
Я использую следующие строки:
x = subprocess.run(["sh", "/path/to/script/myscript.bash"], stdout=subprocess.PIPE)
print(x.stdout.decode('utf8'))
Это прекрасно работает при работе в python интерактивном режиме, но просто зависает при выполнении внутри скрипта python, и у меня есть использовать Ctrl + Z, чтобы убить скрипт python. Что мне не хватает?
В прошлом с python 2.7 я только что использовал строку вроде:
x = subprocess.Popen(args='sh /path/to/script/myscript.bash', stdout=subprocess.PIPE, shell=True)
scriptOutput = str(x.communicate()[0])
Это, похоже, не работает с python 3.6, что я и запускаю .