0

Python スクリプトからシェル コマンドを実行するには、通常はsubprocessoros.systemモジュールを使用します。

それを使用して、別のアプリケーションを開始しているPythonスクリプトからいくつかのシェルコマンドを実行しており、そのアプリケーションにはコマンドラインインターフェイスもあります。

  1. Python スクリプトからそのアプリケーション CLI にコマンドを渡すにはどうすればよいですか?
  2. Python スクリプトからアプリケーション CLI の出力をキャプチャするにはどうすればよいですか?

誰かが資料やサンプルコードを提案できると非常に高く評価されます.

4

1 に答える 1

2

開始しようとしているアプリケーションは、サブプロセスを実行するときに異なる動作をする場合があります。具体的には、プロセス パイプに接続されている場合、一部のアプリケーションは、行ごとにフラッシュするのではなく、デフォルトで出力をバッファリングします。実行中のアプリケーションが出力をフラッシュする場合は、リアルタイムで取得できます。それ以外の場合は、バッファーがいっぱいになったときにのみ出力を取得します。

とはいえ、いくつかのアプリケーションを実行する例を次に示します。

p = subprocess.Popen(['someapp', 'param1', 'param2'], 
        stdin=subprocess.PIPE, stdout=subprocess.PIPE,)

# sends the command "some_command" to the app:
p.stdin.write('some_command\n') 

# waits for a single line from the output
result = p.stdout.readline() 

ハングアップする場合p.stdout.readline()は、出力がバッファリングされていることを意味します。

于 2013-08-08T10:28:07.193 に答える