【subprocess】Pythonからコマンドを実行する方法

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • Python環境でコマンド操作を実現したい
  • subprocessモジュールの使い方について詳しく知りたい
目次

【Python】subprocessモジュールとは

subprocessとは、Pythonからコマンドを実行するためのモジュールです。

Pythonからコマンドを実行する場合、subprocessモジュールを利用します。このモジュールを用いることで、例えば次のようなことが実現できるようになります。

  • 現在のディレクトリを確認・移動
  • 外部ファイルの作成・実行・削除

上記以外にもコマンドを用いて実現できる操作は、ほぼ全てPython環境でも再現できます。

【基礎編】pythonからsubprocessでコマンド実行

Python環境からコマンド実行する場合、subprocess.run()メソッドを活用します。以下、記述イメージを見ていきましょう。

コマンド実行の基本形

基本的な記述方法はsubprocess.run()メソッドに直接コマンドを記述する方法です。lsコマンド実行時の例を以下に示します。

import subprocess

subprocess.run("ls")

引数有りでコマンド実行

引数を指定しコマンドを実行する場合、次のように記載します。

subprocess.run()メソッド内にlist型でコマンドを指定し実行します。

import subprocess

# コマンド関数
cmd = ["ls", "-l"] 

# 実行
subprocess.run(cmd)
import subprocess

# コマンド関数 
cmd = "ls -l"

# 実行
subprocess.run(cmd.split())

コマンド実行後に出力結果を取得

コマンド実行後に結果出力を取得したい場合、capture_output=Trueという引数を追記し次のように記述します。また、テキストとして出力結果を得たい場合はtext=Trueを指定すると良いです。

コード

import subprocess

# コマンド関数
cmd = ["ls", "-l"] 

# コマンド実行
res = subprocess.run(cmd,                  # コマンド関数
                     capture_output=True,  # 出力結果を取得
                     text=True,            # 出力結果をテキストで表示        
                     )


# 【returncode】終了コード(0:正常, 1:異常)を確認する場合
print("==========終了コード=============")
print(res.returncode)

# 【stdout】標準出力を確認する場合
print("==========標準出力結果============")
print(res.stdout)

# 【stderr】標準エラーを確認する場合出力
print("==========標準エラー==============")
print(res.stderr)

出力イメージ

# ==========終了コード=============
# 0

# ==========標準出力結果============
# -rwx------@  1 User  staff   1000000 Jun 24  2020 abcd1.pptx
# -rw-------@  1 User  staff   1000000 Apr 17  2022 abcd2.pptx
# drwxr-xr-x   6 User  staff       100 Feb  6 12:55 Folder
# -rw-r--r--   1 User  staff      1000 Feb 18 11:19 python_file.py

# ==========標準エラー==============

【操作用途別】Pythonからコマンド実行

前述したls以外のコマンドも実行が可能です。以下、代表的なコマンド操作をPython環境で実行する方法について言及します。

指定のファイルを開く

指定のファイルを開く場合、ファイルパスとopenコマンドを用いて次のように実行します。

import subprocess

# ファイルパス
path = "test.txt"

# コマンド関数
cmd = ["open", path]

# 実行
subprocess.run(cmd)

指定のフォルダを開く

指定のフォルダを開く場合、そのディレクトリとopenコマンドを用いて次のように実行します。以下はカレントディレクトリを開く例を示したものです。

import subprocess
import os

# カレントディレクトリのパス
path = os.path.abspath('.')

# コマンド関数
cmd = ["open", path]

# 実行
subprocess.run(cmd)

Pythonファイルを呼出・実行

Pythonファイル(.py)をコマンドで呼び出し実行したい場合、次のように記述できます。

import subprocess

# Python実行コマンド
cmd = "python3 xxxxx.py"

# コマンド実行
subprocess.run(cmd.split())

【参考】Pythonを活用した様々なお役立ち情報

当サイトではPythonを活用した様々なお役立ち情報を配信しています。

Pythonでできること・仕事に応用

Pythonで実現できることを知りたい」「Pythonスキルを仕事で活かしたい」方はこちら!

Python✖️AI・機械学習

Python活用の最大メリットの1つであるAI・機械学習について詳しく知りたい方はこちら!

Python✖️投資自動化(仮想通貨)

Pythonはフィンテックとの相性が良く、その中でも仮想通貨自動売買タスクは近年注目度の高い領域です。フィンテック・投資に興味がある方はこちら!

最後に

この記事が気に入ったら
フォローしてね!

目次