python - 打开网络浏览器后如何恢复程序(或退出)?

标签 python browser if-statement

我正在制作一个小的 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/

相关文章:

Python ImportError 在子文件夹中加载模块

c - 访问 C 库的最 pythonic 方式是什么——例如,OpenSSL?

python - 使用字符串搜索 Pandas 系列会产生 KeyError

html - 什么是 HTTP 'method' 大写最佳实践?

JavaScript浏览器解析速度测试

java - 程序不会读取文件中的所有数据

python - 如何在 Python 中并行化 Ising 模型(多处理包)?

Javascript通过浏览器检测隐藏html表单

javascript - 如何使用 jQuery 将 if 条件添加到 append() 中

java - 表达式 Java boolean 值的非法开始?