ホームページ >バックエンド開発 >Python チュートリアル >Python で `subprocess.Popen` と `subprocess.run` に文字列を渡すにはどうすればよいですか?
stdin 経由で subprocess.Popen に文字列を渡す
subprocess.Popen に文字列を渡すには、stdin= を指定することが必須です。関数呼び出し内の PIPE。これにより、Popen オブジェクトの stdin 属性を、文字列からデータを受信できるファイルのようなオブジェクトにすることができます。
これを示すために、次の例を実装できます:
from subprocess import Popen, PIPE, STDOUT p = Popen(['grep', 'f'], stdout=PIPE, stdin=PIPE, stderr=STDOUT) grep_stdout = p.communicate(input=b'one\ntwo\nthree\nfour\nfive\nsix\n')[0] print(grep_stdout.decode()) # -> four # -> five # ->
stdin=PIPE を指定すると、入力文字列を stdin.communicate() を通じて grep プロセスに渡すことができ、入力データの処理とデータの取得が可能になります。コマンドの出力。
Python 3.5 以降のバージョンでは、subprocess.run 関数が提供されます。これにより、文字列を外部コマンドに渡し、その出力を取得するプロセスが簡素化されます。これは次のように説明できます。
#!/usr/bin/env python3 from subprocess import run, PIPE p = run(['grep', 'f'], stdout=PIPE, input='one\ntwo\nthree\nfour\nfive\nsix\n', encoding='ascii') print(p.returncode) # -> 0 print(p.stdout) # -> four # -> five # ->
subprocess.run を使用すると、入力文字列を引数として入力パラメータに直接渡すことができるため、データ通信がより簡単になります。
以上がPython で `subprocess.Popen` と `subprocess.run` に文字列を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。