我使用的是 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/