Python 2.x でサブプロセス管理にサブプロセス モジュールを使用する方法

PHPz
リリース: 2023-07-30 10:07:58
オリジナル
1145 人が閲覧しました

Python 2 でサブプロセス管理にサブプロセス モジュールを使用する方法。xx

概要:
Python 開発では、プログラム内で他の外部コマンドやプログラムを呼び出す必要がある場合があります。サブプロセス モジュールは、Python によって提供される標準ライブラリであり、サブプロセスを簡単に作成して通信することができます。この記事では、サブプロセス管理にサブプロセス モジュールを使用する方法を紹介し、コード例を示して説明します。

  1. サブプロセスの作成:
    サブプロセス モジュールで最も一般的に使用される関数は subprocess.Popen() で、新しいプロセスを開始して Popen オブジェクトを返すことができます。 Popen() 関数を使用してサブプロセスを作成するための基本的な構文は次のとおりです。
import subprocess

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, 
                 close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, 
                 creationflags=0)
ログイン後にコピー

パラメータの説明:

  • args: 文字列またはシーケンス タイプ コマンド ライン パラメータ
  • bufsize: 入力バッファと出力バッファのサイズを制御するパラメータ。0 はバッファリングなしを表し、1 はライン バッファリングを表し、その他の正の数値はバッファ サイズを表します。 executable: 実行可能ファイルへのパス、デフォルト システム PATH 環境変数の検索パスを使用します
  • stdin: 子プロセスの標準入力ストリーム、デフォルトは PIPE、つまり stdin 属性を介した入力ですPopen オブジェクトの
  • stdout: 子プロセス ストリームの標準出力。デフォルトは PIPE で、Popen オブジェクトの stdout 属性を通じて出力されます。
  • stderr: 子プロセスの標準エラー ストリーム子プロセス。デフォルトは PIPE で、Popen オブジェクトの stderr 属性を通じて出力されます。
  • preexec_fn : 子プロセスが開始される前に呼び出される実行可能オブジェクト
  • close_fds: かどうか不要になったファイル記述子を閉じるには、デフォルトは False
  • shell: シェルを介してコマンド解析を実行するかどうか、デフォルトは False
  • cwd: 作業ディレクトリ、デフォルトは None
  • env: 環境変数、デフォルトは None、つまり親プロセスの環境変数を使用します
  • universal_newlines: 入出力の制御 テキスト モードに変換するかどうか、デフォルトは False
  • startupinfo: 子プロセスの起動情報、デフォルトは Noneです。
  • creationflags: 子プロセスの作成フラグ、デフォルトは 0
  • サンプルコード 1:サブプロセスを開始してコマンドを実行し、サブプロセスの出力を取得します。
import subprocess

cmd = "ls -l"
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output, _ = p.communicate()
print(output)
ログイン後にコピー

サブプロセスの入力と出力:
    サブプロセスを作成するとき、
  1. Popen()
    の stdin、stdout、および stderr パラメータを通じてサブプロセスを指定できます。関数の入力 出力。これらのパラメータが指定されていない場合、デフォルトで新しいパイプが作成され、Popen オブジェクトのプロパティを通じて読み書きされます。
  2. サンプルコード 2: 子プロセスを起動し、パイプ経由で入出力を実行します。
import subprocess

cmd = "grep -E 'a|b|c'"
p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
input_data = "abcdefg
hijklmnop
qrstuvwxyz
"
output, _ = p.communicate(input_data)
print(output)
ログイン後にコピー

サンプル コード 3: サブプロセスを開始し、出力をファイルにリダイレクトします。

import subprocess

cmd = "grep -E 'a|b|c' input.txt > output.txt"
subprocess.Popen(cmd, shell=True)
ログイン後にコピー

子プロセスの終了を待機しています:
    子プロセスの実行は非同期です。デフォルトでは、
  1. Popen()
    関数は Popen オブジェクトを返します子プロセスの実行が完了するまで待つのではなく、すぐに実行します。次のステップに進む前に、子プロセスの実行が完了するまで待つ必要がある場合は、Popen() オブジェクトの wait() メソッドを使用できます。
  2. サンプル コード 4: 子プロセスを開始し、その実行が完了するまで待ちます。
import subprocess

cmd = "ls -l"
p = subprocess.Popen(cmd, shell=True)
p.wait()
print("子进程执行完毕")
ログイン後にコピー

子プロセスの終了ステータス コードをキャプチャします。
    各子プロセスには、その実行結果を表す終了ステータス コードがあります。
  1. Popen()
    オブジェクトの returncode 属性を使用して、子プロセスの終了ステータス コードを取得できます。それが 0 の場合は、実行が成功したことを意味します。
  2. サンプル コード 5: 子プロセスの終了ステータス コードを取得します。
import subprocess

cmd = "ls -l"
p = subprocess.Popen(cmd, shell=True)
p.wait()
if p.returncode == 0:
    print("子进程执行成功")
else:
    print("子进程执行失败")
ログイン後にコピー

概要:

サブプロセス モジュールを使用すると、Python プログラムでサブプロセスを簡単に作成し、プロセスを管理できます。具体的な操作方法としては、子プロセスの作成、子プロセスの入出力の制御、子プロセスの終了待ち、子プロセスの終了ステータスコードの取得などが挙げられます。この知識を習得すると、サブプロセス管理に Python をより適切に活用し、プログラムの柔軟性と拡張性を向上させることができます。


上記は、Python 2.x でのサブプロセス管理のためのサブプロセス モジュールの使用に関する関連コンテンツです。お役に立てれば。

以上がPython 2.x でサブプロセス管理にサブプロセス モジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート