打电话给操作系统打开网址?

Bol*_*ter 65 python url operating-system system-calls

我可以使用什么来调用操作系统在用户默认的任何浏览器中打开URL?不担心跨操作系统兼容性; 如果它在linux中工作对我来说足够了!

kob*_*ien 105

以下是如何使用给定的URL打开用户的默认浏览器:

import webbrowser

webbrowser.open(url[, new=0[, autoraise=True]])
Run Code Online (Sandbox Code Playgroud)

以下是有关此功能的文档.它是Python的stdlibs的一部分:

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

我已经在Linux,Ubuntu 10.10上成功测试了这个.

  • 我得到 webbrowser.open(url[, new=0[, autoraise=True]]) ^ SyntaxError: invalid syntax (4认同)
  • 我在Ubuntu 12.04上测试它也可以正常工作, (2认同)
  • 在使用Python 2.7.2的OS X 10.8.2上,这**似乎不起作用.但是,它在使用Python 2.7.3的Windows 7上运行良好.使用XFCE 4.8和Python 2.7.3在Ubuntu 12.04上也可以正常工作. (2认同)
  • FWIW,这就是“导入反重力”使用的:https://hg.python.org/cpython/file/tip/Lib/antigravity.py (2认同)

bob*_*nce 32

我个人真的不会使用该webbrowser模块.

对于特定浏览器来说,这是一个复杂的嗅探,如果用户安装了多个浏览器,将无法找到用户的默认浏览器,如果不知道其名称(例如Chrome),则无法找到浏览器.

更好的Windows只是使用该os.startfile功能,该功能也适用于URL.在OS X上,您可以使用opensystem命令.在Linux上有xdg-open一个由GNOME,KDE和XFCE支持的freedesktop.org标准命令.

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
Run Code Online (Sandbox Code Playgroud)

这将在主流平台上提供更好的用户体验.webbrowser也许你可以回到其他平台上.虽然你很可能在一个不起作用/不寻常/嵌入式操作系统的情况下,上述工作都没有,但是很webbrowser可能也会失败.

  • 注意,webbrowser现在也使用`xdg-open`。因此,这个答案在现代python上已经过时了,没有理由不使用webbrowser模块。 (7认同)
  • 我刚看了webbrowser的来源,我不确定我是否同意你的看法.只有unix嗅探看起来有点不可靠,甚至它应该在KDE或GNOME中正常工作(它可能使用补丁来使用`xdg-open`,尽管`xdg-open`使用类似的嗅探).例如,win32实现已经使用了'os.startfile()`,它也有一个回退. (6认同)

Ivo*_*zel 6

您可以使用webbrowser模块.

webbrowser.open(url)
Run Code Online (Sandbox Code Playgroud)


Ken*_*ial 5

然后如何混合@kobrien和@bobince的代码:

import subprocess
import webbrowser
import sys

url = 'http://test.com'
if sys.platform == 'darwin':    # in case of OS X
    subprocess.Popen(['open', url])
else:
    webbrowser.open_new_tab(url)
Run Code Online (Sandbox Code Playgroud)