Python popen命令。等待命令完成

发布于 2021-01-29 14:55:33

我有一个脚本,可通过popen shell命令启动。问题在于脚本不会等到该popen命令完成后才继续运行。

om_points = os.popen(command, "w")
.....

如何告诉我的Python脚本等待shell命令完成?

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

    根据您想如何使用脚本,您有两种选择。如果您希望命令阻塞并且在执行过程中不执行任何操作,则可以使用subprocess.call

    #start and block until done
    subprocess.call([data["om_points"], ">", diz['d']+"/points.xml"])
    

    如果您想在执行过程中执行操作或将内容输入stdin,可以communicatepopen调用后使用。

    #start and process things, then wait
    p = subprocess.Popen([data["om_points"], ">", diz['d']+"/points.xml"])
    print "Happens while running"
    p.communicate() #now wait plus that you can send commands to process
    

    如文档中所述,wait可能会死锁,因此建议进行通信。



知识点
面圈网VIP题库

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

去下载看看