调用操作系统打开网址?

99 投票
5 回答
92449 浏览
提问于 2025-04-16 07:17

我可以用什么方法来让操作系统打开用户默认的浏览器,并访问一个网址呢?我不太在意跨操作系统的兼容性;只要在Linux上能用就行!

5 个回答

8

你可以使用 webbrowser 这个模块。

webbrowser.open(url)
45

个人来说,我真的不建议使用webbrowser模块。

这个模块很复杂,它试图去识别特定的浏览器。如果用户安装了多个浏览器,它可能找不到用户的默认浏览器;如果浏览器的名字不被识别(比如Chrome),它也找不到。

在Windows上,直接使用os.startfile函数会更好,这个函数也可以用来打开网址。在Mac上,可以使用open这个系统命令。在Linux上,有一个叫xdg-open的命令,这是一个由freedesktop.org标准支持的命令,适用于GNOME、KDE和XFCE等桌面环境。

if sys.platform=='win32':
    os.startfile(url)
elif sys.platform=='darwin':
    subprocess.Popen(['open', url])
else:
    try:
        subprocess.Popen(['xdg-open', url])
    except OSError:
        print 'Please open a browser on: '+url

这样在主流平台上用户体验会更好。对于其他平台,你可以考虑使用webbrowser,不过如果你使用的是一些不常见或嵌入式的操作系统,可能上述方法都不管用,那webbrowser也很可能会失败。

163

下面是如何用一个给定的网址打开用户默认浏览器的方法:

import webbrowser

url = "https://www.google.com/"

webbrowser.open(url, new=0, autoraise=True)

这里有关于这个功能的文档,它是Python标准库的一部分:

http://docs.python.org/library/webbrowser.html

我在Linux系统的Ubuntu 10.10上成功测试过这个方法。

撰写回答