Python popen命令。等待命令完成
我有一个脚本,可通过popen shell命令启动。问题在于脚本不会等到该popen命令完成后才继续运行。
om_points = os.popen(command, "w")
.....
如何告诉我的Python脚本等待shell命令完成?
-
根据您想如何使用脚本,您有两种选择。如果您希望命令阻塞并且在执行过程中不执行任何操作,则可以使用
subprocess.call
。#start and block until done subprocess.call([data["om_points"], ">", diz['d']+"/points.xml"])
如果您想在执行过程中执行操作或将内容输入
stdin
,可以communicate
在popen
调用后使用。#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
可能会死锁,因此建议进行通信。