この記事では、Python のサブプロセス クラスと定数について詳しく説明します。一定の参考値があります。必要な友人は参照してください。お役に立てれば幸いです。
Constant
subprocess.DEVNULL: stdin、stdout、stderr パラメータに渡すことができる特別な値。これは、特別なファイル os.devnull が入出力のリダイレクトに使用されることを意味します。
subprocess .PIPE: stdin、stdout、stderr パラメーターに渡すことができる特別な値。これは、パイプを使用して入力と出力をリダイレクトすることを意味します。
subprocess.STDOUT: 使用できる特別な値。これは、標準エラーを標準出力にリダイレクトすることを意味します。
Popen
サブルーチンを新しいプロセスで実行します。
構築パラメータ
(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, シェル=False、cwd=None、env=None、universal_newlines=None、startupinfo=None、creationflags=0、restore_signals=True、start_new_session=False、pass_fds=()、*、encoding=None、errors=None、text=None)
args: 文字列またはシーケンス。シーケンスの場合、args の最初の要素は実行されるプログラムです。文字列の場合、解釈はプラットフォームに依存します。POSIX システムでは、args は実行されるプログラムの名前またはパスとして解釈されます。 (プログラムにパラメータが渡されない場合に限ります)。
shell: 実行するプログラムとしてシェルを使用するかどうかを指定します。 True に設定した場合は、文字列型の args パラメータを使用することをお勧めします。
POSIX システムでは、shell=True はデフォルトで /bin/sh
をシェルとして使用します。 args が文字列の場合、その文字列はシェルを通じて実行されるコマンドを表します。args がシーケンスの場合、最初の要素は実行されるプログラムを指定し、他の要素はパラメータとして扱われます。
Windows システムでは、shell=True のデフォルトは、COMSPEC
環境変数で指定されたシェル (通常は C:\WINDOWS\system32\cmd.exe
) です。 shell=True を指定する必要がある唯一のシナリオは、実行する命令が dir
、copy
などの組み込みシェルである場合です。
bufsize: stdin/stdout/stderr パイプ ファイル オブジェクトを作成するときは、それを対応するパラメーターとして open()
関数に渡します。
0: バッファリングを使用しない
1: 行バッファリングを使用する
その他の正の整数: バッファ サイズ
負の整数 (デフォルト): システムのデフォルト値を使用する
実行可能ファイル: shell=True が使用されるシナリオはほとんどありません。 POSIX システムで shell=True の場合、このパラメータは、デフォルトのshell/bin/sh
を置き換える新しいシェル プログラムを指定することを示します。
stdin/stdout/stderr: プログラム実行時の標準入力、標準出力、標準エラーをそれぞれ指定します。オプションの値には、PIPE
、DEVNULL
、既存のファイル記述子 (正の整数)、既存のファイル オブジェクト、None が含まれます。子プロセスのファイル ハンドルは親プロセスから継承されます。さらに、stderr を STDOUT
にすることもでき、これは標準エラー出力が標準出力にリダイレクトされることを示します。
preexec_fn: POSIX システムに限定され、子プロセス内のプログラムの前に実行する呼び出し可能オブジェクトを設定します。
close_fds: False の場合、ファイル記述子は、「ファイル記述子の継承」で説明されている inheritable
識別に従います。
True の場合、POSIX システムでは、0、1、2 以外のファイル記述子は子プロセスが実行される前に閉じられます。
pass_fds: POSIX のみ。親プロセスと子プロセスの間でオープンを維持するために使用されるファイル記述子のオプションのシーケンス。このパラメータが指定されると、close_fds は強制的に True に設定されます。
cwd: 子プロセスが実行される前に、作業ディレクトリを cwd に変更します。これは文字列またはパスのようなオブジェクトにすることができます。
restore_signals: POSIX に限定、省略
start_new_session: POSIX に限定、省略
env: 新しいプロセスの環境変数を定義する dict オブジェクト。親プロセスから継承された変数を置き換えます。 Windows で side-by-side アセンブリ
を実行するには、使用可能な環境変数 SystemRoot
を含める必要があります。 env が指定されている場合は、プログラムの実行が依存するすべての環境変数を指定する必要があります。
encoding/errors/text/universal_newlines: stdin/stdout/stderr のデフォルトは次のとおりです。バイナリモードが開きます。ただし、encoding/errors が指定されている場合、または text が True の場合、stdin/stdout/stderr は、指定されたエンコーディングとエラーを使用してテキスト モードで開かれます。 universal_newlines パラメータは、下位互換性のためのテキストと同等です。
startupinfo: Windows のみ、省略
creationflags: Windows のみ、省略
Method
poll(): 子プロセスが終了したかどうかを確認します。終了していないことを示すには None を返し、それ以外の場合は returncode 属性を設定して戻ります。
wait(timeout=None): タイムアウト後に子プロセスが終了しない場合、TimeoutExpired 例外がスローされます。それ以外の場合は、returncode 属性を設定して戻ります。
communicate(input=None, timeout=None): プロセス対話: データを標準入力に送信し、終了文字が読み取られるまで標準出力または標準エラー出力のデータを読み取ります。 (stdout_data, stderr_data) の形式でタプルを返します。タプルのタイプは文字列またはバイトです。
Input は None、または子プロセスに送信されるデータです。これは、ストリーム開始モードに応じて文字列型またはバイト型になります。
プロセスの stdin を操作したい場合は、Popen オブジェクトの作成時に stdin=PIPE を指定する必要があります。同様に、返されるタプルを None 以外にしたい場合は、stdout=PIPE および/または stderr=PIPE を設定する必要があります。
タイムアウト後に子プロセスが終了しない場合、TimeoutExpired 例外がスローされますが、子プロセスは強制終了されません。適切なアプリケーションでは、子プロセスを強制終了して対話を終了する必要があります:
proc = subprocess.Popen(...) try: outs, errs = proc.communicate(timeout=15) except TimeoutExpired: proc.kill() outs, errs = proc.communicate()
send_signal( signal): 子プロセスにシグナルを送信します。
terminate(): 子プロセスを終了します。 POSIX システムでは、SIGTERM シグナルを子プロセスに送信します。Windows システムでは、TerminateProcess() が呼び出されてプロセスを終了します。
kill(): 子プロセスを強制的に終了します。 POSIX システムでは、SIGKILL シグナルを子プロセスに送信します。 Kill() は、Windows システム上の terminate() のエイリアスです。
Attributes
args: Popen
コンストラクターの最初のパラメーターに渡します。リストまたは文字列型
stdin: Popen に渡される stdin パラメータが PIPE の場合、この属性は文字列またはバイト型の書き込み可能なストリーム オブジェクトを表します。 Popen に渡される stdin パラメータが PIPE でない場合、この属性の値は None
stdout: Popen.stdin と似ていますが、ストリーム オブジェクトは読み取り可能です
stderr: Popen.stdout に似ています
pid: 子プロセスのプロセス ID。 shell=True が設定されている場合、pid は派生シェルのプロセス番号を示します。
#returncode: 子プロセスの戻りコード。None はプロセスが終了していないことを示します。負の数 -N は、プロセスがシグナル N によって終了されたことを意味します (POSIX のみ)。
run()
関数操作の戻り値は、プロセスの実行が完了したことを示します。
Attributes
args: run()
関数の最初のパラメータ、リストまたは文字列タイプを渡します
returncode: 子プロセスの終了コード。負の数の場合は、特定のシグナルによりプロセスが終了したことを意味します。
stdout: キャプチャされた子プロセスの標準出力。デフォルトはバイト型です。 ##run() 関数が呼び出されます。 エンコーディングまたはエラーが指定されている場合、または text=True が設定されている場合、文字列型になります。標準出力がキャプチャされなかった場合は、None が返されます。
stderr: キャプチャされた子プロセスの標準エラー。 でエンコーディングが指定されている場合、デフォルトはバイト型です。 run() 関数が呼び出される。エラーが発生するか、text=True が設定されている場合は文字列型になります。標準エラーがキャッチされない場合は、None が返されます。サブプロセスの実行タイムアウト。
cmd: コマンドtimeout:
run()
またはstdout:出力属性別名
stderr:
run() 関数によってキャプチャされたサブプロセスのエラー出力、それ以外の場合は None
subprocess.CalledProcessError check_call() または
check_output() 関数が 0 以外のステータス コードを返した場合にスローされます。
戻りコード:
子プロセスの終了コード。負の数値の場合は、プロセスがシグナルにより終了したことを意味します。cmd: TimeoutExpired と同じ
stdout:
TimeoutExpired と同じ
stderr:TimeoutExpired と同じ
この記事はここで終了です。エキサイティングなコンテンツについては、中国語 Web サイトの PHP Python ビデオ チュートリアル
列を参照してください。以上がPython のサブプロセス クラスと定数の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。