Linux 个命令在 Python 个子进程中

Linux commands in Python subprocesses

我正在执行一组命令,首先需要我调用 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。

在此先感谢您的指导!

import subprocess

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

bash_command('[your_command]')

您不需要单独调用 运行 bash。你可以 运行 这样的东西:

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

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

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