Python のサブプロセスの標準入力に書き込むにはどうしたらいいですか?
質問
サブプロセスを開始し、サブプロセスの標準入力に書き込むPythonスクリプトを書こうとしています。私はまた、サブプロセスがクラッシュした場合に取られるアクションを決定することができるようにしたいと思います。
私が開始しようとしているプロセスは
nuke
というプログラムです。このプログラムには独自の Python が組み込まれており、コマンドを送信して、コマンドが実行された後に終了するように指示することができればと思います。今のところ、コマンドプロンプトで Python を起動し、その後に
nuke
をサブプロセスとして起動すれば、コマンドを
nuke
にコマンドを入力できますが、これをすべてスクリプトに記述して、マスターの Python プログラムが
nuke
を起動し、その
標準入力
に書き込んで (つまり Python の内蔵バージョンに)、おかしなことをするように指示します。
nuke
をこのように開始するスクリプトを書きました。
subprocess.call(["C:/Program Files/Nuke6.3v5/Nuke6.3", "-t", "E:/NukeTest/test.nk"])
では何も起こりません。
nuke
はユーザー入力を待っているため、何も起こりません。今度はどのように標準入力に書き込めばいいのでしょうか?
私は、プラグインを実行する際に
nuke
を使用しているため、複数のフレームをレンダリングする際に断続的にクラッシュすることがあります。そこで、このスクリプトで
nuke
を起動し、何かをするように指示し、もしクラッシュしたら、もう一度試してみてください。ですから、もしクラッシュをキャッチしてまだ大丈夫な方法があれば、それは素晴らしいことです。
どのように解決するのですか?
それは
communicate
:
from subprocess import Popen, PIPE, STDOUT
p = Popen(['myapp'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
stdout_data = p.communicate(input='data_to_write')[0]
"Better"、この警告のためです。
他のOSのパイプバッファが一杯になって子プロセスをブロックすることによるデッドロックを避けるために、.stdin.write、.stdout.read、.stderr.readではなく、communicate()を使用することです。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] バイトを文字列に変換する
-
[解決済み] PythonでSIGINTを捕捉するには?
-
[解決済み] Pythonでサブプロセス.PIPEをノンブロッキングで読み込む
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] パイプで `subprocess` コマンドを使用する方法
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?