Python子进程中的Linux命令

时间:2015-10-08 20:07:17

标签: python linux bash process

我正在执行一组首先要求我调用bash的命令。我试图通过编写Python脚本来自动执行这些命令。我的第一个命令显然需要bash,所以我运行

p = subprocess.call(['bash'])

它启动bash shell没问题。

我遇到问题的地方是尝试在bash环境中执行剩余的代码。我想也许需要进程通信(即重定向stdout,如

p0 = subprocess.Popen(cmd, stdout=subprocess.PIPE)
p1 = subprocess.Popen(['bash'], stdin=p0.stdout)
p1.communicate()

)但是管道似乎没有解决我的问题。

如何编写此脚本以模仿以下顺序Linux命令?

$ bash
$ cmd1
$ cmd2
...

我正在使用Ubuntu 14.04和Python 2.7.6。

提前感谢您的指导!

2 个答案:

答案 0 :(得分:1)

import subprocess

def bash_command(cmd):
    subprocess.Popen(cmd, shell=True, executable='/bin/bash')

bash_command('[your_command]')

答案 1 :(得分:1)

您无需单独调用run bash。你可以运行类似的东西:

p1 = subprocess.call(['cmd1'])
p2 = subprocess.call(['cmd2'])

如果由于某种原因必须运行bash(例如,命令包含bash语句),则可以从bash -c "cmd1; cmd2"运行subprocess.call()

编辑:正如Busturdust指出的那样,你也可以尝试设置shell=True,但是使用sh而不是bash。但这对你来说已经足够了。