如果我运行 echo a; echo b
in bash 结果将是两个命令都运行。但是,如果我使用 subprocess 则运行第一个命令,打印出整个行的其余部分。
下面的代码回显 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")
最佳答案
你必须在子进程中使用 shell=True 并且没有 shlex.split:
import subprocess
command = "echo a; echo b"
ret = subprocess.run(command, capture_output=True, shell=True)
# before Python 3.7:
# ret = subprocess.run(command, stdout=subprocess.PIPE, shell=True)
print(ret.stdout.decode())
返回:
a
b
关于python - 使用子进程运行多个 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742789/