我有一个脚本,可通过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
可能会死锁,因此建议进行通信。
问题内容: 在我的Java程序中,我创建一个执行命令以运行批处理文件的过程,如下所示: 现在,我想发生的是该命令 仅在我调用的批处理文件执行完毕后运行。但是现在,它会在命令提示符打开后立即运行。 我该如何解决? 问题答案: 我设法在其他地方找到答案。要保持初始过程打开,直到批处理文件完成,您需要的是“ / wait”
问题内容: 情况如下: 我有一个泊坞窗容器(jenkins)。我已经将套接字安装到容器中,以便可以在jenkins容器中执行docker命令。 手动操作,一切都在容器中进行。但是,当詹金斯执行作业时,它不会“等待” 命令运行完成。 下面是Jenkinsfile的摘录。短期命令可以正确运行,并输出环境变量。仅运行下一个命令(python),然后Jenkins立即继续前进,而无需等待完成。Jenkin
问题内容: 我正在尝试让Jenkins在Docker上的Jenkins从属服务器上运行以下命令: 问题在于,当我 在Jenkins中 运行此程序时,会生成Docker进程,但Jenkins不会等待它并立即返回成功。但是,如果我用无限循环替换Docker命令,Jenkins将按预期等待。 当我以Jenkins用户的身份直接从构建从设备运行此命令时,系统会等待命令完成(这就是我想要发生的事情)。 我已
问题内容: 我正在将Selenium IDE用于Firefox并搜索等待命令。我的问题是我想用嵌入式外部地图测试网站。此外部地图需要3-5秒才能加载。 我的命令: 问题答案: 使用暂停命令,然后在“目标”字段中输入毫秒数。 将速度设置为最快(操作->最快),否则它将无法正常工作。
全局配置 你可以获得命令行帮助通过pyspider --help和pyspider all --help来获得帮助。 全局的选项适用于所有的子命令 ``` Usage: pyspider [OPTIONS] COMMAND [ARGS]... A powerful spider system in python. Options: -c, --config FILENAME
我有一个懒惰的集合,我想在我的服务/控制器中随意初始化它。此时此刻,我可以做到: 此命令依赖于Hibernate,不会使JPA的实现透明。有JPA优雅的方法来做到这一点吗?