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。但这对你来说可能就足够了。
我正在执行一组命令,首先需要我调用 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。但这对你来说可能就足够了。