LoginSignup
0
0

More than 1 year has passed since last update.

python3でさくっとシェルコマンドを呼び出したい時

Last updated at Posted at 2019-08-10

ポイントは「さくっと」である。難しいことをしたいわけではない、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はプロセスの終了を待って戻り値をもらう
  • 標準出力の内容はoutputstdout属性でアクセスできる
    • byte型になっているので、str(output.stdout, 'utf-8')のようにへんかんしよう
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0