与えられたコマンドでPythonで新しいsubprocess
を生成すると(私はpython
コマンドでPythonインタプリタを起動します)、どのように新しいデータを(STDIN経由で)プロセスに送ることができますか?サブプロセスを有効にして、コマンドを与え続けますか? Python
答えて
標準subprocessモジュールを使用してください。プロセスを開始するにはsubprocess.Popen()を使用し、バックグラウンドで(つまりPythonプログラムと同時に)実行します。 Popen()を呼び出すときは、stdin、stdout、およびstderrの各パラメータをsubprocess.PIPEに設定することをお勧めします。次に、返されたオブジェクトのstdin、stdout、およびstderrフィールドを使用して、データの書き込みと読み取りを行うことができます。
未テストのコード例:
from subprocess import Popen, PIPE
# Run "cat", which is a simple Linux program that prints it's input.
process = Popen(['/bin/cat'], stdin=PIPE, stdout=PIPE)
process.stdin.write(b'Hello\n')
process.stdin.flush()
print(repr(process.stdout.readline())) # Should print 'Hello\n'
process.stdin.write(b'World\n')
process.stdin.flush()
print(repr(process.stdout.readline())) # Should print 'World\n'
# "cat" will exit when you close stdin. (Not all programs do this!)
process.stdin.close()
print('Waiting for cat to exit')
process.wait()
print('cat finished with return code %d' % process.returncode)
複数のコマンドを起動するためにSubprocessによって作成されたトンネルを有効にすることはできません。これを達成するために、サブプロセスのstdin、stdout、stderrのような他のもののためにparamikoを見ることができます。このリンクpython subprocessを読むことができます。これは最初のpythonプロジェクトです。
しないでください。
サブプロセスにコマンドを送信する場合は、ptyを作成し、ptyの一端をSTDINに接続してサブプロセスをforkします。 PTYが、それはエラーメッセージではなく、送信コマンドを受け取るのでstderrに装着され、このコードで
RNULL = open('/dev/null', 'r')
WNULL = open('/dev/null', 'w')
master, slave = pty.openpty()
print parsedCmd
self.subp = Popen(parsedCmd, shell=False, stdin=RNULL,
stdout=WNULL, stderr=slave)
が、原理は同じである:ここでは
は、私のコードの一部からの抜粋です。subprocessでpty.openpty()を使用しないでください。これは複雑です。 subprocess.PIPEを使用して、サブプロセスモジュールがそれを処理するようにします。 (よりシンプルで標準的であるだけでなく、PTYよりも軽いパイプを使用します)。 – user9876
- 1. pythonサブプロセスでコマンドを連続してシェルしようとしています
- 2. python:サブプロセスでコマンドを送信
- 3. TCP接続を有効に保ち、GETコマンドだけをループする
- 4. Nightwatchは502の悪いゲートウェイを与え続けています
- 5. Androidなぜ私のcheckDBはfalseを与え続けますか?
- 6. コマンド内のpythonサブプロセスenv var
- 7. なぜこの有効なシェルコマンドは、サブプロセスを経由してPythonでエラーをスローしますか?
- 8. このCコードは、コードブロック内にセグメンテーションフォールトを与え続けます
- 9. AS3 MovieClipは私にNULLオブジェクト参照を与え続けます
- 10. このクエリは私に多パートバインドエラーを与え続けます
- 11. Pythonサブプロセスのコマンドを実行します.Popen
- 12. UNIXコマンドを実行しているときにOSErrorを与えるPythonサブプロセスモジュール
- 13. PythonのサブプロセスからSSHにコマンドを渡す方法
- 14. 有効なユーザートークンを与えていないTrello API認証
- 15. HttpClient executeはConnectTimeoutExceptionを与え続けます
- 16. このコードは私にエラーを与え続けます、そして、私はクラスに新しいです
- 17. Pythonは無効な構文を続けています
- 18. subprocess.callによってローカルホストにコマンドを与える
- 19. INDIRECT Statmentsが#REFを与え続けている場合
- 20. enum dayofweekの値を与えることは有効です
- 21. paramikoを使ってPythonスクリプトでsftp proxyコマンドを与えるには?
- 22. PythonとCSV:行を見つけて列の値を与える
- 23. ノードchild_processは、mogodumpのstderrに有効な出力を与えます。
- 24. Tomcat 7は私に404を与え続けています。何が間違っていますか?
- 25. ATコマンドを使用してSIMロックを有効にするVB.net
- 26. Telerik-Grid:HeaderStyle-CssClassに加えてスキンクラス名を有効にします
- 27. Python経由でコマンドラインに与えられた値だけを解析します。
- 28. 有効な応答が与えられるまでユーザーに入力を要求する - Python
- 29. サブプロセスの入力は、私は、リモートサーバー上でコマンドを実行するPythonのサブプロセスを使用しているパスワード
- 30. Python 2.7のサブプロセス - エンジンにコマンドを発行する
それはあなたがpexpect'は、この種のものに最適です '、との対話を自動化したいシェルの場合。 – wim