我正在制作一个小Python程序,它调用webbrowser
模块来打开一个URL。打开URL的效果非常好。在
我的问题是一旦到达这行代码,问题就没有响应了。如何让程序通过这行代码继续执行?在上下文中,问题行下面是有问题的行:
if viewinbrowser == "y":
print "I can definitely do that. Loading URL now!"
webbrowser.open_new(url)
print "Exiting..."
sys.exit()
程序没有执行print "Exiting..."
,我添加了它,因为我注意到程序由于某种原因没有离开if语句。在
我从命令行运行这个程序,以防这很重要。编辑:我在Kubuntu9.04i386上运行,通过backports使用KDE4.3。我使用firefox3.5作为我的默认浏览器,在KDE的系统设置中声明,程序可以正确地调用它。(至少,Firefox中会打开一个新的标签页,上面有所需的URL——我相信这是所需的功能。)/Edit
另外,我假设这个问题在几乎所有外部调用中都会发生,但我对Python非常陌生,不知道在这个站点上要搜索的术语。(搜索“pythonwebbrowser”没有得到任何有用的东西。)所以,如果已经在另一个标题下讨论过了,我很抱歉!在
有什么建议吗?在
webbrowser模块发出一个系统调用来启动一个单独的程序(web浏览器),然后等待(“阻塞”)一个退出代码。当你从另一个程序启动一个程序时,就会发生这种情况。您必须(A)编写自己的函数,该函数不会阻塞等待webbrowser退出(通过使用threads、fork()或类似的函数),或者找出webbrowser模块是否有非阻塞调用。在
这看起来取决于你在哪个平台上运行。在
我猜你是在Windows上,正如另一个评论人提到的,Windows没有fork。我还猜测webbrowser模块在内部使用fork,这就是为什么它在Windows上不起作用。如果是这样,那么使用线程模块创建一个新线程来打开webbrowser可能是最简单的解决方案:
在这里最简单的事情可能就是叉子。不幸的是,我很确定这在windows中不起作用,因为我认为它们的进程模型可能与类unix的操作系统不同。不过,这个过程也会类似。在
相关问题 更多 >
编程相关推荐