ホームページ  >  記事  >  バックエンド開発  >  Python 3.x でサブプロセス管理にサブプロセス モジュールを使用する方法

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

王林
王林オリジナル
2023-08-01 13:04:501333ブラウズ

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

はじめに:
Python プログラミングでは、システム コマンドの実行や他のコマンドの開始など、外部コマンドやプログラムと対話する必要がよくあります。アプリケーションを実行するか、他のスクリプトを呼び出します。サブプロセス管理とは、Python プログラムでのサブプロセスの作成、制御、通信の操作を指します。 Python は、サブプロセス管理を処理するための強力で柔軟なツールであるサブプロセス モジュールを提供します。この記事では、サブプロセス モジュールを使用してサブプロセスを作成、制御、および通信する方法を紹介します。

1. サブプロセスの作成
subprocess モジュールを使用してサブプロセスを作成するのは非常に簡単で、Popen クラスのコンストラクター メソッドを直接呼び出すことでサブプロセス オブジェクトを作成できます。以下は簡単なサンプル コードです:

import subprocess

# 执行一个系统命令,输出结果到标准输出
subprocess.Popen(["ls", "-l"])

この例では、Popen クラスのコンストラクター メソッドを使用してサブプロセス オブジェクトを作成します。渡されるパラメーターはリストであり、リストの最初の要素は次のとおりです。実行されるコマンドと後続の要素はコマンドのパラメータです。上記のコードは、システム コマンド ls -l を実行し、結果を標準出力に出力します。

上記の方法に加えて、サブプロセス オブジェクトの作成時にパラメータ shell=True を指定してシェル コマンドを実行することもできます。サンプル コードは次のとおりです。

import subprocess

# 执行一个 Shell 命令
subprocess.Popen("ls -l", shell=True)

上記のコードでは、シェル コマンド "ls -l" をパラメーターとして Popen クラスのコンストラクターに渡し、パラメーターを渡します。 shell=True シェル コマンドを実行します。

2. サブプロセスの制御
サブプロセスが正常に作成された後、サブプロセス オブジェクトのさまざまなメソッドを使用して、サブプロセスの動作を制御できます。一般的に使用されるメソッドの一部を以下に示します。

  1. wait(): 子プロセスが終了するまで待機し、ステータス コードを返します。
  2. communicate(input=None): 子プロセスと対話し、コンテンツを子プロセスに送信したり、子プロセスの出力結果を取得したりできます。
  3. poll(): 子プロセスが終了したかどうかを確認し、終了した場合はプロセスのステータスコードを返し、終了していない場合はNoneを返します。

次は、出力結果を取得し、子プロセスの終了時に出力するサンプル コードです。

import subprocess

# 执行一个系统命令,获取输出结果
p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
output, error = p.communicate()
print(output.decode("utf-8"))

上記のコードでは、communicate() を使用します。 メソッド 子プロセスと対話し、子プロセスの出力結果を取得し、それを変数 output に割り当てます。次に、decode("utf-8") メソッドを使用して、バイナリ文字列を UTF-8 でエンコードされた文字列に変換し、出力を出力します。

3. サブプロセスの通信
communicate() メソッドを使用すると、サブプロセスと簡単に通信できます。サブプロセスからデータを受け取り、結果を出力します。以下はサンプル コードです。

import subprocess

# 执行一个命令并接收子进程的输出
p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
output, error = p.communicate()
print(output.decode("utf-8"))

# 向子进程发送数据并接收输出结果
p = subprocess.Popen(["grep", "example"], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
input_data = "This is an example"
output, error = p.communicate(input=input_data.encode("utf-8"))
print(output.decode("utf-8"))

上記のコードでは、まず子プロセス オブジェクト p を作成し、コマンド ls -l を実行して結果を出力します。 出力 に。次に、子プロセス オブジェクト p を再度作成し、コマンド grep example を実行して、子プロセスに input_data を送信します。最後に、結果を出力します。

概要:
サブプロセス モジュールを使用すると、サブプロセスを簡単に作成、制御し、サブプロセスと通信することができます。実際のプログラミングプロセスでは、特定のニーズに応じてこれらの関数を柔軟に使用することで、より複雑なサブプロセス管理操作を実現できます。この記事が、Python でサブプロセス管理にサブプロセス モジュールを使用する際のお役に立てば幸いです。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。