Python での Pexpect

Rana Hasnain Khan 2023年10月10日
  1. Python のPexpect
  2. Python での Pexpect のメソッド
Python での Pexpect

Python での Pexpect を例を挙げて紹介します。

Python のPexpect

Python は非常に人気のある言語であり、データ サイエンスや機械学習に使用されています。 Python にはさまざまな目的に使用できる組み込みライブラリがあるため、非常に強力な言語です。

この記事では、Python の pexpect について学習します。 Pexpect は、子プロセスを作成し、それらを自動的に制御するために使用される強力なライブラリです。

エクスプロイトをテストしたり、考えられるあらゆるタスクを実行したりできます。

ほとんどの場合、システムのユースケースをテストして、特定のタスクでシステムがどのように機能するか、およびそれらのタスクでシステムがどの程度うまく機能するかを確認するために使用できます。 また、日常生活の一部の小さなタスクを自動化するためにも使用できます。

これを使用して、複数のサーバーにソフトウェア パッケージをダウンロードするためのセットアップ スクリプトを整理できます。 Pexpect は、インタラクティブなマルチスレッド コマンドライン インタープリターの Expect ファミリーへの Python インターフェイスです。

Pexpectは、ネットワーク接続を介してリモート マシン上でネットワーク化されたプログラムを生成するためのライブラリです。

これは、SSH や Telnet などのネットワーク サービスのスクリプト作成によく使用されます。 また、スタンドアロンのスポーン プログラムにも役立ちます。

作業中のソフトウェアに pexpect をインストールしましょう。 pexpect を Python にインストールする最も簡単な方法は、pip パッケージ マネージャーを使用することです。

次のコマンドでインストールできます。

pip install pexpect

pip がインストールされていない場合は、次のコマンドでインストールできます。

pip install python-pip

Python での Pexpect のメソッド

それでは、アプリケーションで pexpect を使用する方法について説明しましょう。 アプリケーションで pexpect を 3つの異なる方法で使用できます。

最初に説明するメソッドは run() メソッドです。

PexpectRun() メソッド

Run() は pexpect の強力なメソッドで、コマンドを実行し、そのコマンドから受け取った結果を返すために使用できます。 このメソッドは、別の強力なライブラリ メソッドであるos.systemを置き換えます。

それでは、このメソッドを使用して、echo コマンドを使用して Hello World を出力してみましょう。 まず、pexpect ライブラリをインポートし、その後、以下に示すように run() メソッドを使用します。

# python
import pexpect

print(pexpect.run("echo Hello World"))

出力:

Linux システムでの pexpect 実行メソッド

上記の例からわかるように、このメソッドは、pexpectrun() メソッドを使用して、Python ファイル内のコマンド ライン コードを実行しました。

上記の例で注意すべき重要な点の 1つは、このコマンドが Windows ではなく Linux システムで機能することです。

PexpectSpawn() メソッド

次に、子プロセスを生成して制御するために使用できる pexpect の別の方法について説明します。 run() メソッド内の文字列をコマンド ライン プロンプトに置き換えたので、spawn() で同じことを行い、それを使用してシェル コマンドを実行し、実行後に結果を取得できます。

それでは、spawn() メソッドを使用して子プロセスを開始する例で使用してみましょう。 同じシナリオを使用して、spawn を使用して文字列を echo します。

その後、以下に示すように、配列を expect() メソッドに送信して、配列内の文字列から上記のコマンドに一致させ、コマンドに一致した要素の位置を返します。

# python
import pexpect

childProcess = pexpect.spawn("echo Hello World")

# prints he matched index of string.
print(childProcess.expect(["Python", "Hello World", "Child Process"]))

出力:

Linux システムでの pexpect spawn と expect メソッド

上記の例からわかるように、配列内の文字列の位置は 2 番目であり、配列は 0 から始まるため、正しい位置を出力します。

この記事では、異なる機能を実行するために使用できる pexpect の 3つの方法について説明しました。これらを組み合わせて使用すると、最後の例のように大きな機能にすることができます。

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn