理想情况下,它应该像我要执行的命令列表,并使用单个子进程调用执行所有这些命令。我能够通过将所有命令存储为shell脚本并使用子进程调用该脚本来做类似的事情,但我想要一个纯python解决方案。我将使用shell = True执行命令,是的我理解风险。
答案 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
并循环几个命令。据我所知,没有办法直接用子进程模块启动多个子进程。