编辑:此问题已在 Python 端修复。在 Python 的下一个次要版本之后,您不需要考虑这个问题。不过,以下答案仍然是有用的分析。
在 Python3.6 中,webbrowser.get()会给你类似的东西:
<webbrowser.BackgroundBrowser object at 0x7f1e5373a048>
但在 Python3.7 中:
<webbrowser.Opera object at 0x7f546c22ea90>.
这意味着在 Python3.6 中它将尝试使用 XDG 标准打开 URL:
xdg-open https://google.com
而在 Python3.7 中,它将直接使用其 CLI 命令打开 Opera 浏览器:
opera -remote "openURL(https://google.com,new-window)"
虽然我不确定这种改变是否是有意的,但两种方式都应该是正确的。问题是,Opera 的命令行选项坏了。这不是 Python 的错,而是 Opera 的错误。(尝试使用上面的命令打开,你会看到相同的http://openurl%28https//google.com,new-window)。)
作为解决方法,您可以通过 XDG 标准强制打开 URL,使用3.7 中引入register()的新preferred参数。
import webbrowser
webbrowser.register("xdg-open", None, webbrowser.BackgroundBrowser("xdg-open"), preferred=True)
print(webbrowser.get()) # Now you will see <webbrowser.BackgroundBrowser object at 0x7f1e5373a048>
webbrowser.open('https://google.com')
我希望它会有所帮助!
编辑:看起来 Opera 的错误是因为他们在将引擎更改为 Chromium 后没有更新文档。Opera 与 Chrom 的 CLI 参数配合得很好。我对 Python 进行了更改以反映这一点。