小编典典

在子进程中运行多个bash命令

python

如果我echo a; echo b在bash中运行,结果将是两个命令都运行。但是,如果我使用子进程,则将运行第一个命令,打印出该行其余部分的全部内容。下面的代码回显a; echo b而不是a b,我如何才能运行两个命令?

import subprocess, shlex
def subprocess_cmd(command):
    process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
    proc_stdout = process.communicate()[0].strip() 
    print proc_stdout

subprocess_cmd("echo a; echo b")

阅读 190

收藏
2020-12-20

共1个答案

小编典典

您必须在子进程中使用shell = True,而不能使用shlex.split:

def subprocess_cmd(command):
    process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True)
    proc_stdout = process.communicate()[0].strip()
    print proc_stdout

subprocess_cmd('echo a; echo b')

返回:

a
b
2020-12-20