在 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.org
和 scp me#comp:/~/blah.text ep#comp:/register/
。
我正在尝试使用以下代码捕获我在 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.org
和 scp me#comp:/~/blah.text ep#comp:/register/
。