Python subprocess.Popen()等待完成[重复]

发布于 2021-01-29 16:00:43

这个问题已经在这里有了答案

Python子进程:等待命令完成后再开始下一个? (2个答案)

5年前关闭。

我正在编写一个小脚本来依次遍历目录并在其中的子目录上运行命令。

但是我遇到了一个Popen()问题,它会遍历目录并运行所需的命令,而没有等待上一个命令完成。即

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

它会启动每个目录的命令,而无需关心。我希望它等待当前的一个完成,然后开始下一个。我在目录上使用的工具Log2timeline来自SANS
SIFT,这需要花费相当长的时间并产生大量的输出。我不在乎输出,我只想让程序等待下一个开始。

做到这一点的最佳方法是什么?

谢谢!

关注者
0
被浏览
230
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用Popen.wait

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


    check_outputcheck_call,它们都将等待返回代码,具体取决于您要执行的操作和python的版本。

    如果您使用的是python> = 2.7,而您不在乎输出,则使用check_call

    您也可以使用call,但是如果您有非零的返回码,则可能不会出现任何错误,但这不会引起任何错误



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看