如何使用单个python子进程调用执行多个shell命令?

时间:2016-09-27 12:47:26

标签: python subprocess

理想情况下,它应该像我要执行的命令列表,并使用单个子进程调用执行所有这些命令。我能够通过将所有命令存储为shell脚本并使用子进程调用该脚本来做类似的事情,但我想要一个纯python解决方案。我将使用shell = True执行命令,是的我理解风险。

1 个答案:

答案 0 :(得分:2)

如果它们是独立的,请使用分号链接它们。

例如,(Python 3)

>>> import subprocess
>>> result = subprocess.run('echo Hello ; echo World', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
>>> result
CompletedProcess(args='echo Hello ; echo World', returncode=0, stdout=b'Hello\nWorld\n')

但从技术上讲,由于shell=True,这不是纯粹的Python解决方案。 arg处理实际上是由shell完成的。 (您可以将其视为执行/bin/sh -c "$your_arguments"

如果你想要一个更纯粹的解决方案,你必须使用shell=False并循环几个命令。据我所知,没有办法直接用子进程模块启动多个子进程。