ポイントは「さくっと」である。難しいことをしたいわけではない、pythonからちょいとシェルコマンドを呼び出して結果を受け取りたいだけ。なのにネットで検索するといろいろややこしい高度な使い方が出てきたのでメモ代わりに(2019年7月時点)
とりあえず呼び出したいなら公式おすすめされているsubprocess.run()を使いましょう。
cmd = ['ls', '-l', 'dir']
subprocess.run(cmd)
のようにコマンドをリストで渡す。ただ、これだけ渡すと実行できたかできなかったか、実行した結果(標準出力)がなんだったのかなど結果しか帰ってこないので、標準出力などがほしい場合は
output = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
で取れます。ちなみにpython3.7からはcapture_output
という便利な変数を渡せるようになりましたが、うちはまだpython3.6なので残念です。
追記(2022.12.2)
-
subprocess.run
はプロセスの終了を待って戻り値をもらう - 標準出力の内容は
output
のstdout
属性でアクセスできる- byte型になっているので、
str(output.stdout, 'utf-8')
のようにへんかんしよう
- byte型になっているので、