Pythonのsubprocess
GPT-4.icon
Pythonのsubprocessモジュールは、新しいプロセスを生成し、その入出力パイプおよびエラーパイプに接続し、そのプロセスを実行するための強力な手段を提供します。このモジュールは、Pythonコードからシェルコマンドを実行するための推奨される方法です。subprocessモジュールは、Python 2.4以降で利用可能で、os.systemやos.spawn*などの古い関数を置き換えることを目的としています。 ### 基本的な使用方法
subprocessモジュールの中心はsubprocess.run()関数です。これはPython 3.5以降で導入され、プロセスの実行とその結果の取得を簡単にするためのものです。 例:
code:py
import subprocess
result = subprocess.run('ls', '-l', capture_output=True, text=True) print(result.stdout)
このコードはls -lコマンドを実行し、出力をキャプチャして表示します。
### より複雑な使い方
- **プロセスの出力をリアルタイムで処理する**: subprocess.Popenを使用して、プロセスの実行中に標準出力や標準エラー出力を読み取ることができます。
- **シェルコマンドの実行**: shell=True引数を使用して、シェル経由でコマンドを実行することができます。これにより、パイプラインやファイルワイルドカードなどのシェル機能を利用できますが、セキュリティリスクも伴います。
- **環境変数の使用**: env引数を使用して、プロセスの実行環境をカスタマイズできます。
### セキュリティ上の注意点
subprocessモジュールを使用する際には、特にshell=Trueを使用する場合には、コマンドインジェクション攻撃に対して注意が必要です。ユーザー入力を直接コマンドに渡さないようにし、可能な限りshell=Trueの使用を避けるべきです。
### まとめ
Pythonのsubprocessモジュールは、外部プロセスを起動し、その出力を制御する強力な方法を提供します。基本的な使い方から複雑なシナリオまで対応できる柔軟性を持ちながら、セキュリティ面での注意も必要です。