Python子进程在交互模式下工作,但不在脚本中工作

Python子进程在交互模式下工作,但不在脚本中工作,python,subprocess,sh,Python,Subprocess,Sh,我试图从python中执行一个shell脚本,并捕获输出 我使用的是以下几行: 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中,我只使用了一行代

我试图从python中执行一个shell脚本,并捕获输出

我使用的是以下几行:

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。

这是否回答了您的问题?不是真的。我现在的主要问题甚至不是捕获输出,而是当从python脚本运行时,命令不会执行。什么是回溯。如果应用程序挂起并且必须终止,我如何获得堆栈跟踪?添加一些调试以查看它的错误位置,这是脚本中的全部代码还是更多?这是否回答了您的问题?不是真的。我现在的主要问题甚至不是捕获输出,而是当从python脚本运行时,命令不会执行。什么是回溯。如果应用程序挂起并且必须终止,我如何获得堆栈跟踪?添加一些调试以查看它的错误所在,这是脚本中的全部代码还是其他代码?