1. ホーム
  2. python

[解決済み] Python subprocess.Popen() 完了待ち [重複]。

2022-02-14 04:24:29

質問

私は、あるディレクトリを順次走査し、その中のサブディレクトリに対してコマンドを実行する小さなスクリプトを書いています。

しかし Popen() は、ディレクトリをたどり、前のコマンドが終了するのを待たずに、希望するコマンドを実行することができます。

for dir in dirs:
    #run command on the directory here.

は、各ディールに対して、その後気にすることなくコマンドをキックオフしています。私は、現在のものが終了するのを待ってから、次のものをキックオフさせたいと思っています。私がディレクトリに使っているツールは Log2timeline のSANS SIFTは、かなり時間がかかり、かなりの量の出力を生成します。出力は気にしないので、次のプログラムを起動する前に待機してほしいのです。

これを実現するための最適な方法は何でしょうか?

ありがとうございました。

解決方法は?

使用方法 ポップンウェイト :

process = subprocess.Popen(["your_cmd"]...)
process.wait()

または チェック出力 , チェックコール これらはすべて、あなたが何をしたいのか、そしてpythonのバージョンに応じて、リターンコードを待ちます。

Python >= 2.7 を使っていて、出力にこだわらないのであれば check_call .

を使用することもできます。 コール しかし、これはリターンコードが0でない場合はエラーを発生させないので、それが望ましいかどうかはわかりません。