2017-11-17 11 views
0

新しいコマンドプロンプトを開き、実行可能ファイルを実行するスクリプトを作成しています。 os.systemを使用して作業コードを取得しました。 subprocess.Popenに変換するのを手伝ってもらえますか?os.systemをsubprocess.Popenに変換する

hello_exe = r'c:\hello.exe' 
os.system("start cmd /k {}".format(hello_exe)) 

私は、ユーザーがコマンド・プロンプトを表示したいので、バックグラウンド・プロセスとしてhello_exeを実行し、ログをスクロールすることはできませんすることができます。どんな助けもありがとうございます。ありがとう。

私の環境:Windows8とPythonはsubprocess.Popenへの変換は、このようなものです2.7.12

+0

使用 'subprocess.call( 'cmd.exeの/ K "{}"' フォーマット(hello_exe)、creationflags = subprocess.CREATE_NEW_CONSOLE)'。 'cmd.exe/k'の唯一の目的は、hello.exeが終了した後にプロセスをコンソールに接続したままにすることです。そうでなければ必須ではなく、新しいコンソールを割り当てることとは関係ありません。 hello.exeが終了した後にコンソールを閉じることが大丈夫ならば、残しておいてください。 – eryksun

+0

答えをありがとう。しかし、hello_exeは無制限に実行されるプログラムであるため、直接使用することはできません(ユーザが終了した場合、またはPythonスクリプトで終了した場合にのみ終了します)。そして私はsubprocess.call()が私のスクリプトをブロックしないようにしたい。私は.Popenに.callを変更し、私が望む仕事をしました。おかげで、あなたのcreationflagsは私が文書で見つけることができない魔法をしました – paulp

答えて

0

import subprocess 

process = subprocess.Popen(r'c:\hello.exe', shell = True) 
process.communicate() 
0

の変換は、あなたが参照できる

from subprocess import Popen, PIPE 

hello_exe = r'c:\hello.exe' 

proc = Popen(hello_exe, stdout=PIPE, shell = True) 
proc.communicate() 
ここ

ているいくつかのリンクをPOPENします理解するsubprocess.Popen

Link to understand Popen

Another link to understand Popen

Link to 50+ examples of Popen

+0

ありがとう。最初の答えに記載されているcreationflagsは本当にトリックでした – paulp

関連する問題