バッチファイル(Ctemp.cmd
)を複数回実行する短いPython 3スクリプトを書きました。このスクリプトは次のとおりです。プロセスが終了するのを待っているforループを保持する方法はありますか?
上記のコードは(ほぼ)同じ時刻にファイルを実行します。ただし、バッチファイルの実行が完了してから再度実行するまで待つことをお勧めします。 Pythonの3.6.3用
バッチファイル(Ctemp.cmd
)を複数回実行する短いPython 3スクリプトを書きました。このスクリプトは次のとおりです。プロセスが終了するのを待っているforループを保持する方法はありますか?
上記のコードは(ほぼ)同じ時刻にファイルを実行します。ただし、バッチファイルの実行が完了してから再度実行するまで待つことをお勧めします。 Pythonの3.6.3用
ただ、下記のようにコードを変更します -
for i in range (START,STOP+1,STEP):
os.system("Ctemp.cmd")
ベター常にあなたのCMDファイルのフルパスを使用しています。それでも問題が解決しない場合は、Ctemp.cmd
ファイルをCtemp.bat
に変更してください。
回答:
.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
属性を返します。
エラーをキャッチすることに気をつけなければ、 '.call(...)'だけがジョブを実行します。 – Raf
あなたの権利。私は編集を行います。ありがとうございました。 –
外部コマンドを呼び出して制御したい場合は、「サブプロセス」を参照する必要があります – Raf
バッチファイルを順番に(つまり一度に1つずつ)実行する方法を尋ねていますか?または、すべてのバッチファイルが完了するまで、Pythonスクリプトをブロックする方法を尋ねていますか?一度に – willnx
... –