2017-01-31 22 views
2

目標はいくつかのコマンドの事前実行でpython端末を開くことです。実生活では、いくつかのモジュールをロードすると、いくつかの変数が定義されていますが、ここでは単純化したバージョンです:開いているpython端末にコマンドを送る

from subprocess import Popen, CREATE_NEW_CONSOLE 

r=Popen("python",creationflags=CREATE_NEW_CONSOLE) 
r.communicate(input=b"print(2+2)") 

そうでない場合は、ターミナルウィンドウが表示されないので、CREATE_NEW_CONSOLEは(私はIDEからコードを実行する)、使用されています。上記のコードはPythonのターミナルウィンドウを開きますが、入力はそこにはありません。問題を解決するために何ができるかそう

r=Popen(["python","print(2+2)"],creationflags=CREATE_NEW_CONSOLE) 

それとも

r=Popen("python",creationflags=CREATE_NEW_CONSOLE, stdin=PIPE) 
r.communicate(input=b"print(2+2)") 

:いくつかのバリエーションをしようとすると同様に、表示されてからウィンドウを停止しますか?

+0

を使用することです第2および第3の例は非常に迅速に開閉する。あなたは何かをstdinにパイプしようとしているが、接続されているstdinは、端末に接続されていますか? –

+0

私はあなたの質問を正しく理解している場合、主な考え方は、ウィンドウを閉じずにターミナルに複数のコマンドをリモートで起動することです。上記のすべてがそれを達成しようとしました。 – Nik

+0

https://stackoverflow.com/questions/30494945/createprocess-with-new-console-window-but-override-some-std-io-handles –

答えて

関連する問題