シェル コマンドをプログラムで実行し、その出力を文字列としてキャプチャするタスクは、Python のサブプロセス モジュールを使用して実行できます。
公式に保守されている Python バージョンでの最も簡単なアプローチには、 check_output 関数を利用します。
import subprocess output = subprocess.check_output(['ls', '-l']) print(output) # Output: b'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
Python 3.5 では、 run 関数は、より柔軟で最新のアプローチを提供します:
import subprocess result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE) print(result.stdout.decode('utf-8')) # Output: 'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
拡張互換性と高度な機能を実現するには、低レベルの Popen コンストラクターを使用します。通信を使用すると、出力をキャプチャして入力を渡すことができます。
import subprocess p = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) output, _ = p.communicate() print(output) # Output: b'.\n..\nfoo\n'
シェル コマンドの実行 (shell=True Argument)
デフォルト、関数は単一のプログラムを実行します。複雑なシェル コマンドを実行するには、shell=True を設定します。ただし、これによりセキュリティ上の懸念が生じます。
入力処理
標準入力経由で入力を渡すには、run または Popen で input キーワード引数を指定します。
エラー処理
適切なエラー処理には、check_output を使用してくださいstdout=subprocess.STDOUT を使用するか、stderr=subprocess.STDOUT を使用して Popen を使用します。あるいは、サブプロセスのリターンコードを確認してください。
以上がPython でシェル コマンドを実行し、その出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。