如果无法使用图形浏览器,请停止webbrowser.open

时间:2015-12-23 03:40:38

标签: python

如果无法打开图形浏览器(例如,通过没有X转发的SSH运行脚本),是否可以阻止webbrowser.open打开基于文本的浏览器。我更喜欢显示链接而不是依赖基于文本的浏览器(需要javascript支持,但在文本浏览器中不可用)。这是我目前的代码

import webbrowser
print(some_url)
webbrowser.open(some_url)

如果出现这种情况,webbrowser可以抛出异常,或者如果无法例外,则显示它打算为.open()打开的浏览器会很好。

1 个答案:

答案 0 :(得分:1)

webbrowser模块列出了它检查的基于文本的浏览器,因此您可以忽略它们:

import webbrowser

def open_browser(url, new=0, autoraise=True, ignore=[]):
    for name in [b for b in webbrowser._tryorder if b not in ignore]:
        browser = webbrowser.get(name)

        if webbrowser.open(url, new, autoraise):
            return True

    return False

if not open_browser(url, ignore=['www-browser', 'links', 'elinks', 'lynx', 'w3m']):
    print('Go to', url)

更糟糕的方法是修补补丁os.environ

import os
import webbrowser

def open_browser(url, new=0, autoraise=True, ignore_console=False):
    if not ignore_console:
        return webbrowser.open(url, new, autoraise)

    original_get = os.environ.get

    def new_get(self, key, failobj=None):
        if key == 'TERM':
            return failobj

        return original_get(self, key, failobj)

    try:
        os.environ.get = new_get
        return webbrowser.open(url, new, autoraise)
    finally:
        os.environ.get = original_get