2013-04-13 17 views
0

我一直在试图创建一个脚本,重新加载一个名为Midori的Web浏览器,如果互联网闪烁。但是,如果我通过CLI打开Midori,它似乎只能工作 - 否则,在我重新加载之后,程序崩溃。我已经决定,最好的主意是让剧本通过subprocess模块打开Midori。于是,我把这个作为我的代码第一个参数:如何在Python中打开应用程序,然后让脚本的其余部分运行?

import subprocess as sub 
sub.call(["midori"]) 

浏览器打开,但程序的其余部分冻结,直到我退出绿。我试图使用线程,但它似乎不工作。

有什么办法通过Python打开应用程序,然后让脚本的其余部分在打开应用程序后继续运行?

回答

2

the docs

运行由ARGS中描述的命令。 等待命令完成,然后返回returncode属性。

(强调)

你可以看到这是我们应该期待的行为。为了解决这个问题,请改用subprocess.Popen。这不会以同样的方式阻挡:

from subprocess import Popen 
midori_process = Popen(["midori"]) 
+0

对不起,我没有指定。我正在使用版本2.7.3 – xxmbabanexx

+0

@xxmbabanexx它不应该有所作为,我不相信行为已从2.x更改为3.x.作为提示,您可以使用文档任意页面左上角的下拉菜单来交换版本。我尽可能多地使用3.x,所以我倾向于以3.x页为结尾 - 总体上实际上几乎没有什么区别。 –

+0

@xxmbabanexx python版本在这里并不重要。这是你使用错误的子进程对象。 – mgilson

相关问题