起動して入力をわたしたい。
cmd1= "cat" p = subprocess.Popen(cmd1.strip().split(" "), stdin=subprocess.PIPE) p.stdin.write("Hello World\n".encode('utf8'))
コマンドを起動するときに、 stdin に PIPEを指定する。実行中の python と サブプロセスのSTDINを繋いでやる。
これで p.write
が呼べる
複数パイプしたいとき
複数パイプの起動をしたいときは、こちらのエントリに書きました。
python でコマンド実行。サブプロセスの終了待ち・強制終了・親プロセスと一緒に殺す。 - それマグで!
サンプル
php のソース・コードを実行する例
p1 = Popen(['php'],shell=False,stdin=subprocess.PIPE,stdout=subprocess.PIPE) p1.stdin.write(b'<?php echo "hello";') p1.stdin.close() p1.wait() ret = p1.stdout.read() print(str(ret, 'UTF-8'))
例えば、php に ソース・コードを渡して実行させる。ruby や python などstdin からソースが取れる言語ならこれで実行できる。