在 python 中捕获 bash 代码 运行 的输出

Capture output of bash code run in python

我正在尝试使用以下代码捕获我在 python 脚本中执行的 bash 行的输出:

call_bash = subprocess.Popen(['/space/jazz/1/users/gwarner/test.sh'],stdout=subprocess.PIPE)
output = call_bash.communicate()[0]

这很好用,但我想对其进行更改,以便将 bash 代码直接写入此 python 脚本(无需单独的 .sh 文件)。我知道我可以 运行 bash 来自 python 和 subprocess.call() 的代码,但我无法弄清楚如何捕获输出(通常打印到终端的内容我我使用了错误的术语)。有人可以帮忙吗?

我在 CentOS运行ning python 2.7

subprocess.Popen 的第一个参数是参数列表(除非您指定 shell=True)。

所以你可以像这样做你的例子

call_bash = subprocess.Popen(['ssh', 'me@cli.globusonline.org', 'scp me#comp:/~/blah.text ep#comp:/register/'], stdout=subprocess.PIPE)
output = call_bash.communicate()[0]

这将调用带有 2 个参数的 ssh 命令,me@cli.globusonline.orgscp me#comp:/~/blah.text ep#comp:/register/