Python subprocess.Popen()等待完成[重复]
这个问题已经在这里有了答案 :
Python子进程:等待命令完成后再开始下一个? (2个答案)
5年前关闭。
我正在编写一个小脚本来依次遍历目录并在其中的子目录上运行命令。
但是我遇到了一个Popen()问题,它会遍历目录并运行所需的命令,而没有等待上一个命令完成。即
for dir in dirs:
#run command on the directory here.
它会启动每个目录的命令,而无需关心。我希望它等待当前的一个完成,然后开始下一个。我在目录上使用的工具Log2timeline
来自SANS
SIFT,这需要花费相当长的时间并产生大量的输出。我不在乎输出,我只想让程序等待下一个开始。
做到这一点的最佳方法是什么?
谢谢!
-
使用Popen.wait:
process = subprocess.Popen(["your_cmd"]...) process.wait()
或
check_output,check_call,它们都将等待返回代码,具体取决于您要执行的操作和python的版本。如果您使用的是python> = 2.7,而您不在乎输出,则使用
check_call
。您也可以使用call,但是如果您有非零的返回码,则可能不会出现任何错误,但这不会引起任何错误