我正在制作一个小的 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 语句。
我正在从命令行运行这个程序,以防万一。 编辑: 我在 Kubuntu 9.04 i386 上运行,通过反向移植使用 KDE 4.3。我使用 Firefox 3.5 作为我的默认浏览器,在 KDE 的系统设置中声明,它被程序正确调用。 (至少,在 Firefox 中会打开一个带有所需 URL 的新选项卡——我相信这是所需的功能。)/Edit
此外,我假设几乎任何外部调用都会发生此问题,但我对 Python 还很陌生,不知道要在此站点上搜索的术语。 (搜索“python webbrowser”没有得到任何帮助。)所以,如果已经在不同的标题下讨论过,我深表歉意!
有什么建议吗?
最佳答案
这看起来取决于您在哪个平台上运行。
- MacOSX - 立即返回 True 并打开浏览器窗口。大概是您想要的行为。
- Linux(无 X)- 打开链接文本模式浏览器。一旦关闭,返回 True。
- Linux(带有 X)- 打开 Konquerer(在我的例子中)。立即返回 True。您期望的行为。
我猜您使用的是 Windows,正如另一位评论者所提到的,它没有 fork。我还猜测 webbrowser 模块在内部使用 fork,这就是它在 Windows 上不适合你的原因。如果是这样,那么使用线程模块创建一个打开网络浏览器的新线程可能是最简单的解决方案:
>>> import webbrowser
>>> import threading
>>> x=lambda: webbrowser.open_new('http://scompt.com')
>>> t=threading.Thread(target=x)
>>> t.start()
关于python - 打开网络浏览器后如何恢复程序(或退出)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149233/