1. ホーム
  2. python

[解決済み] サブプロセスで複数のbashコマンドを実行する

2022-03-04 04:20:48

質問

を実行すると echo a; echo b を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