こんにちは、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はフィンテックとの相性が良く、その中でも仮想通貨自動売買タスクは近年注目度の高い領域です。フィンテック・投資に興味がある方はこちら!
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら