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)
它确实有效,但它不是我想要的.
有谁知道出了什么问题?
您必须在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.
| 归档时间: |
|
| 查看次数: |
9930 次 |
| 最近记录: |