2017-10-22 14 views
-1

バッチファイル(Ctemp.cmd)を複数回実行する短いPython 3スクリプトを書きました。このスクリプトは次のとおりです。プロセスが終了するのを待っているforループを保持する方法はありますか?

上記のコードは(ほぼ)同じ時刻にファイルを実行します。ただし、バッチファイルの実行が完了してから再度実行するまで待つことをお勧めします。 Pythonの3.6.3用

+2

外部コマンドを呼び出して制御したい場合は、「サブプロセス」を参照する必要があります – Raf

+0

バッチファイルを順番に(つまり一度に1つずつ)実行する方法を尋ねていますか?または、すべてのバッチファイルが完了するまで、Pythonスクリプトをブロックする方法を尋ねていますか?一度に – willnx

+0

... –

答えて

-1

ただ、下記のようにコードを変更します -

for i in range (START,STOP+1,STEP): 
    os.system("Ctemp.cmd") 

ベター常にあなたのCMDファイルのフルパスを使用しています。それでも問題が解決しない場合は、Ctemp.cmdファイルをCtemp.batに変更してください。

1

回答:

per documentationとおり

.run方法でsubprocessモジュールを実行します。よう:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None)

引数によって記述されたコマンドを実行します。コマンドが完了するのを待ってから CompletedProcessインスタンスを返します。

この回答は、Python 2.7を実行している人のためのものです:あなたは 'サブプロセス' モジュールと.check_call方法を使用することができます

the documentationあたりとして:引数を持つ

subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

Runコマンド。コマンドが完了するのを待ちます。 リターンコードが0の場合はリターンし、そうでない場合は CalledProcessErrorを発生させます。 CalledProcessErrorオブジェクトはreturncode属性に の戻りコードを持ちます。

Rafはコメントで述べたように:

を、あなたがだけではなく、.call方法を実行することができ、エラーをキャッチすると懸念されていない場合。

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

引数によって記述されたコマンドを実行します。コマンドが完了するのを待ってから、 はreturncode属性を返します。

+1

エラーをキャッチすることに気をつけなければ、 '.call(...)'だけがジョブを実行します。 – Raf

+0

あなたの権利。私は編集を行います。ありがとうございました。 –

関連する問題