Skip to main content
 首页 » 编程设计

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

2025年05月04日27java哥

我使用的是 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 中的错误。