は、私は次のようにフォルダをビュンされるバッチファイル(zip.bat)を持っています。次のように今、Pythonスクリプトからこのバッチを呼び出しています:Pythonから呼び出されたときにバッチファイルが終了するのを待つ方法は?</p> <pre><code>for /d %%X in (D:/sample/target/bin) do "c:Program Files7-Zip7z.exe" a -mx "%%X.zip" "%%X*" </code></pre> <p>は、バッチファイルは、フォルダのbinを圧縮し、正常に動作します:
import subprocess as sp
import sys
start_zip_batch = sp.Popen(['D:/zip.bat'],stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE, shell = True)
start_zip_batch.wait()
ので、スクリプトを実行させる際に、今ではbin.zipフォルダを作成しますが、その中に0バイトを示しておくと、しばらくして、それが応答を停止私は手動でそれを閉じる必要があります。 binフォルダは約403 MBです。ですから、私は、zip.batをpythonから呼び出すことで、zipフォルダを作成してからきちんと閉じられるようにしてください。
使用 'start_zip_batch.communicate()'充填ブロッキングから 'stdout'と' stderr'パイプを防止します。しかし、なぜあなたは入力と出力をパイプに設定していますか?標準入出力を必要としない場合は、標準ストリームをPython 3では 'subprocess.DEVNULL'に、Python 2では' fnull = open(os.devnull、 'r +') 'に設定することができます。 – eryksun