停止webbrowser.open,如果图形浏览器不可用

2024-04-24 08:03:03 发布

您现在位置:Python中文网/ 问答频道 /正文

有可能停下来吗网络浏览器打开如果无法打开图形浏览器(例如,通过SSH运行脚本而不使用X-forwarding),则禁止打开基于文本的浏览器。我更喜欢显示链接,而不是依赖于基于文本的浏览器(需要javascript支持,但在文本浏览器中不可用)。这是我现在的密码

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

如果webbrowser可以在发生这种情况时抛出异常,或者甚至在不可能出现异常的情况下显示它打算为.open()打开的浏览器,那就更好了。你知道吗


Tags: 文本网络脚本图形url密码链接情况
1条回答
网友
1楼 · 发布于 2024-04-24 08:03:03

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

相关问题 更多 >