如果无法打开图形浏览器(例如,通过没有X转发的SSH运行脚本),是否可以阻止webbrowser.open打开基于文本的浏览器。我更喜欢显示链接而不是依赖基于文本的浏览器(需要javascript支持,但在文本浏览器中不可用)。这是我目前的代码
import webbrowser
print(some_url)
webbrowser.open(some_url)
如果出现这种情况,webbrowser
可以抛出异常,或者如果无法例外,则显示它打算为.open()
打开的浏览器会很好。
答案 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