Python подпроцесс работает в интерактивном режиме, но не в скрипте - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь выполнить сценарий оболочки из 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, что я и запускаю .

...