2016-04-14 10 views
0

私は、Windowsで面倒なコマンドラインを自動化しようとしています。Pythonからの複数の同時Windowsコマンドプロンプトを開き、実行する

私はZookeeperのサーバーのインスタンスを開き、新しいコマンドプロンプトを開き、Apache Kafkaのサーバーのインスタンスを開く必要があります。私は、新しいコマンドプロンプトウィンドウを開いて、新しいコマンドを実行できるようにしたいと思います。

これは私がStackOverflowで見つけた他のクエリとは、これらのプロセスをすべて同時に実行する必要があることです。 ZookeeperサーバーとKafkaサーバーの両方をアクティブにする必要があります。

たとえば、このコードは失敗します。

os.system (ZOOKEEPER_START_SERVER + ' ' + ZOOKEEPER_CONFIG) 
os.system (KAFKA_START_SERVER + ' ' + KAFKA_SERVER_CONFIG) 

Zookeeperサーバーを起動しますが、サーバーがバックグラウンドで無期限に実行されるため、プログラムがハングします。

Kafkaサーバーを新しいコマンドプロンプトで開いて、理想的には私のPythonスクリプトを実行し、Kafkaサーバーの内容にアクセスするために必要な新しいウィンドウを開く必要があります。

上記の2行をメソッドに入れ、手動でファイルをインタラクティブモードで開き、関連する関数を実行してから、新しいコマンドウィンドウで繰り返すことで、私は望むことができます。

これは私の現在の目的ではあまりにも面倒ですが、問題をより明確にすることを願っています。

私は明らかになったと思う。ご協力ありがとうございました!

答えて

0

あなたにはいくつかのオプションがあります。試してみてください:

import subprocess 
subprocess.Popen([ZOOKEEPER_START_SERVER, ZOOKEEPER_CONFIG], creationflags=subprocess.CREATE_NEW_CONSOLE) 

また、start commandを使用することもできます。あなただけのユーザーがウィンドウと対話できるようにしたい場合は

0

import subprocess 
subprocess.call('cmd /C "start (' + ZOOKEEPER_START_SERVER + ' ' + ZOOKEEPER_CONFIG + ')"') 
subprocess.call('cmd /C "start (' + KAFKA_START_SERVER + ' ' + KAFKA_SERVER_CONFIG + ')"') 

あなたは、プログラムのウィンドウと対話するために探しているなら、あなたはどのあなたができる、パイプでsubprocess.Popenを使用する必要がありますPython manualをご覧ください。

関連する問題