我使用的是Python 2.7(Win 8.1 x64),我想在Chrome中打开一个网址。 由于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")
它确实有效,但这不是我想要的。
有谁知道出了什么问题?
答案 0 :(得分:6)
您必须在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']
如果给出shlex
关键字参数, posix=False
实际上会在这里做正确的事情,但webbrowser
不会提供,即使在Windows上也是如此。这可以说是webbrowser
中的一个错误。
答案 1 :(得分:2)
按照上面的建议并在Windows上工作,启用Firefox我已经更改(并且未注释)配置文件中的以下行(注意结尾处的%s):
c.NotebookApp.browser ='C:/ Program Files(x86)/ Mozilla Firefox / firefox.exe%s'
这对我有用。 感谢
答案 2 :(得分:1)
您不需要切换到Unix风格的路径 - 只需引用可执行文件。
import webbrowser
webbrowser.get('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" %s').open('http://google.com')
答案 3 :(得分:0)
为我工作
导入网络浏览器
chrome_path ='C:/程序文件(x86)/Google/Chrome/Application/chrome.exe%s' webbrowser.get(chrome_path).open('http://google.com')
答案 4 :(得分:0)
在Windows上,您不需要使用UNIX样式的路径。只需将原始字符串路径包装到转义引号中的google.exe
,然后在f-string内的%s
令牌后面附加:
import webbrowser
url = "https://docs.python.org/3/library/webbrowser.html"
chrome = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
webbrowser.get(f"\"{chrome}\" %s").open_new_tab(url)
答案 5 :(得分:-1)
您可以尝试以下方法:
import webbrowser
chrome_path = "path_where_chrome_is_located"
webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chrome_path))
webbrowser.get('chrome').open('url')