2016-04-17 20 views
1

私のコード内からアプリケーションを実行していて、後でコードで読む必要があるファイルを書き換えます。自分のプログラムに直接出力される出力はありません。私は、サブプロセスが終了するまで私のコードを待つことができません、それは先に進み、変更されていないファイルを読み込みます。Pythonに進む前にサブプロセス.exeが終了するのを待ちます

私はsubprocess.Popen.wait()、subprocess.call()、およびsubprocess.check_call()を試みましたが、それらのどれも私の問題では機能しません。誰もこの仕事をする方法を知っていますか?ありがとう。

編集:

os.chdir('C:\Users\Jeremy\Documents\FORCAST\dusty') 
    t = subprocess.Popen('start dusty.exe', shell=True) 
    t.wait()  
    os.chdir('C:\Users\Jeremy\Documents\FORCAST') 
+0

人々は通常、反対に文句を言う。サブプロセスをブロックする。あなたのコードはどのように見えますか? (質問に追加してください) – jDo

+2

おそらく、アプリケーションは別のプロセスを生成し、それを実行した直後に戻ります。 – martineau

+0

それが起こっているかどうかはどうすれば知ることができますか?そうであれば、どうすれば解決できますか? – Spuds

答えて

0

は、あなたが(subprocess.Popenの戻りオブジェクトを使用しています):ここに私のコードの関連部分はありますか?

p = subprocess.Popen(command) 
p.wait() 

が有効です。

コマンドがすぐに終了しないことは確実ですか?

+0

これは私が今持っているものです。コマンドは実行されますが、私のコードは待ちません。 – Spuds

+0

コードを表示し、@martineauのコメントをあなたの質問にしてください –

0

あなたは

t = subprocess.Popen(prog, Shell=True) 

してプログラムを実行した場合Pythonは関係なく、プログラムが存在するかどうか、エラーがスローされません。 PopenとShell = Falseを指定して存在しないプログラムを起動しようとすると、エラーが発生します。私の推測では、あなたのプログラムがフォルダに存在しないか、実行されないということになります。 Shell = Falseを指定してPython IDLE環境で実行し、新しいウィンドウが表示されているかどうかを確認してください。

関連する問題