Python:chrome.exe 的通用 webbrowser.get().open() 不起作用

标签 python google-chrome generics browser

我使用的是 Python 2.7 (Win 8.1 x64),我想在 Chrome 中打开一个 URL。 由于 Chrome 仅在 3.3+ 中得到原生支持,因此我尝试了一个通用调用:

import webbrowser
webbrowser.get("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe %s").open("http://google.com")

路径是正确的,打印确实给了我一个处理程序:

"<webbrowser.GenericBrowser object at 0x0000000002D26518\>"

但是,open() - 最好是 open_new_tab()) - 函数不起作用。它返回 False。

如果我运行命令

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "https://google.com"

不过,在 Windows 运行对话框中,它确实有效。


如果我将 Chrome 设置为标准浏览器并运行

webbrowser.get().open("http://google.com")

它确实有效,但这不是我想要的。

有人知道出了什么问题吗?

最佳答案

您必须在 webbrowser.get 调用中使用 unix 风格的路径:

webbrowser.get("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s").open("http://google.com")

这是因为 webbrowser 在内部对路径做了一个 shlex.split,它只会删除 Windows 风格的路径分隔符:

>>> cmd = "C:\\Users\\oreild1\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe %s"
>>> shlex.split(cmd)
['C:Usersoreild1AppDataLocalGoogleChromeApplicationchrome.exe', '%s']
>>> cmd = "C:/Users/dan/AppData/Local/Google/Chrome/Application/chrome.exe %
s"
>>> shlex.split(cmd)
['C:/Users/dan/AppData/Local/Google/Chrome/Application/chrome.exe', '%s']
如果给定 posix=False 关键字参数,

shlex 实际上会在这里做正确的事情,但 webbrowser 不会提供,即使在 Windows 上。这可以说是 webbrowser 中的错误。

关于Python:chrome.exe 的通用 webbrowser.get().open() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873302/

相关文章:

google-chrome - 重置打印机缓存以强制 Chrome 浏览器选择操作系统默认打印机

jquery - 使用 jQuery 的垂直和水平对齐(chrome 和 safari)

java - 重用增强型 For 循环不同的类类型

c# - 通用类中的静态列表

python - 当 <tr> 有 rowspan 时我该怎么办

python - hdbscan 问题(ValueError : numpy. ndarray 大小已更改,可能表示二进制不兼容。预计来自 C header 的 88,来自 PyObject 的 80)

python - Linux。 Heroku-Django。 Collectstatic 只读文件系统

javascript - 如何设置 Google Chrome 语音输入控件的麦克风样式

ios - 无法推断通用参数 'T' - 泛型问题

javascript - 如何在饼图中创建超链接