【发布时间】:2015-10-29 19:45:34
【问题描述】:
我正在尝试使用以下代码捕获我在 python 脚本中执行的 bash 行的输出:
call_bash = subprocess.Popen(['/space/jazz/1/users/gwarner/test.sh'],stdout=subprocess.PIPE)
output = call_bash.communicate()[0]
这很好用,但我想更改它,以便将 bash 代码直接写入此 python 脚本(无需单独的 .sh 文件)。我知道我可以使用 subprocess.call() 从 python 运行 bash 代码,但我不知道如何捕获输出(如果我使用了错误的术语,通常会打印到终端上)。有人可以帮忙吗?
我在 CentOS 上运行 python 2.7
【问题讨论】:
-
你的 bash 文件是什么样的?如果我们不知道它是什么,我们如何帮助将 shell 脚本合并为 python 脚本?
-
@heinst 我认为他在寻求通用解决方案。 op 想将 bash 脚本直接嵌入到 python 脚本中,而单独作为 bash 脚本执行
-
@heinst
ssh me@cli.globusonline.org scp me#comp:/~/blah.text ep#comp:/register/这是脚本,尽管答案应该是相同的,不管它是什么。我问的是在 python 中执行 bash 代码并检索它的输出。 -
@GWarner 和我的测试,如果你这样做
print output它应该包含 shell 脚本的输出 -
@heinst 是的,但我要问的是如何更改此代码,以便实际的 bash 代码位于 python 脚本中,而不是单独的 .sh 文件中。我正在寻找类似的东西:
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]print output
标签: python linux bash subprocess stdout