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

Van*_*kog 1 python browser generics google-chrome

我在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")
Run Code Online (Sandbox Code Playgroud)

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

"<webbrowser.GenericBrowser object at 0x0000000002D26518\>"
Run Code Online (Sandbox Code Playgroud)

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

如果我运行命令

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "https://google.com"
Run Code Online (Sandbox Code Playgroud)

在Windows运行对话框中,它确实可以正常工作.


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

webbrowser.get().open("http://google.com")
Run Code Online (Sandbox Code Playgroud)

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

有谁知道出了什么问题?

dan*_*ano 7

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

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

这是因为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']
Run Code Online (Sandbox Code Playgroud)

shlex如果给出posix=False关键字参数,它实际上会在这里做正确的事情,但webbrowser即使在Windows上也不会提供.这可以说是一个错误webbrowser.