Python|subprocessでLinuxコマンドを実行

田中太郎
田中太郎

Pythonの標準モジュール「subrocess」を使用してPythonスクリプトからLinuxコマンドを実行します

はじめに

簡単なサンプルを作成しました

下記をコピーして実行します

sample1.py
import subprocess

command = ["echo","hoge"]
process = subprocess.run(command)

# 出力
# hoge

使い方

subprocess.run(<command>)

で<command>に格納されているLinuxコマンドがコマンドライン上で実行されます

ここで、

subprocess.run()

の引数はリストでコマンドライン上で入力するときに空白を入れる箇所ごとに分けます

上記の例では

command = [“echo”, “hoge”]

としていますが

command = [“echo hoge”]

を入力するとエラーになります

import subprocess

command = ["echo hoge"]
process = subprocess.run(command)

# 出力
# エラー

サンプル

Linuxコマンドの実行が完了したか確認する

subprocess.run(command)

で実行した結果が成功すると

subprocess.run(command).returncode

で0が返されます

上記を使用することで、コマンドが成功したかどうかを判断します

sample2.py
import subprocess

command = ["grep", "-q", "'fuga'", "sample2.py"]
process = subprocess.run(command)

if not process.returncode:
    print("OK")
else:
    print("NG")

# 出力
# OK

標準出力を取得する

process = subprocess.run(command, encoding=”utf-8″, capture_output=True)

でcommandの結果を取得して

process.stdout

で出力を取り出せます

sample3.py
import subprocess

command = ["echo", "hoge"]
process = subprocess.run(command, encoding="utf-8", capture_output=True)
# process = subprocess.run(command, encoding="utf-8", stdout=subprocess.PIPE)  # Python3.6以下の場合
print(process.stdout)

# 出力
# hoge

まとめ

Pythonの標準モジュールであるsubprocessの使い方を簡単に説明しました

コメント

タイトルとURLをコピーしました