Python 3プログラミングにおいて、プログラムを実行したりシステムコマンドを呼び出す方法は?

PYTHON3 チュートリアル

Python 3でシステムコマンドを実行する方法

Python 3プログラミングにおいて、外部プログラムやシステムコマンドを実行することは、自動化タスク、データ処理、システム管理など様々なシナリオで非常に役立ちます。本ブログ投稿では、Pythonでシステムコマンドを実行する方法に焦点を当て、具体的な使用例を通じて最適なアプローチを解説します。

問題の背景

あるプロジェクトで、PythonスクリプトからOSのコマンドを実行して、システムの情報を取得または変更する必要があります。例えば、ディレクトリの内容をリストする、ファイルをコピーする、プロセスを管理するなどのタスクが考えられます。

解決策の概要

Pythonでは、主にsubprocessモジュールを使用して外部コマンドを実行します。このモジュールは、新しいプロセスを生成し、そのプロセスとの通信を行い、終了コードを取得するための強力な手段を提供します。

ステップバイステップの解説

subprocessモジュールの基本的な使用法

最も基本的な使用法はsubprocess.run()関数を使うことです。これにより、コマンドを実行し、その出力とエラーをキャプチャできます。

import subprocess

# 単一のコマンド実行例
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

このコードは、現在のディレクトリの内容をリストし、結果を標準出力に表示します。

エラーハンドリング

コマンドが失敗した場合にエラーを適切に処理することは重要です。これにはcheck=Trueオプションをsubprocess.run()に渡すことで対応できます。

try:
    subprocess.run(['false'], check=True)
except subprocess.CalledProcessError as e:
    print(f'コマンド実行失敗: {e}')

このコードは、常に失敗するfalseコマンドを実行し、その失敗を捕捉しています。

複雑なシナリオでの使用

複数のコマンドをパイプラインする場合や、環境変数をカスタマイズする場合など、より複雑なシナリオではsubprocess.Popen()を使用します。

# 環境変数を設定してコマンドを実行
env = {'MY_VAR': 'value'}
process = subprocess.Popen(['echo', '$MY_VAR'], env=env, stdout=subprocess.PIPE, text=True)
output, _ = process.communicate()
print(output)

この例では、環境変数MY_VARを設定し、それをechoコマンドで出力しています。

まとめ

Pythonのsubprocessモジュールは、システムコマンドの実行とその出力の管理を行う強力なツールです。基本的な使用からエラーハンドリング、複雑なシナリオへの応用まで、このモジュールが提供する機能を活用することで、多くのシステムレベルのタスクを効率的に自動化できます。

購読
通知
0 Comments
Inline Feedbacks
View all comments