我正在使用hmtl文件作为我程序的帮助文档,并且非常希望能够在特定点打开该文件。我假设我可以使用内置的webbrowser模块通过指定带书签的URL来完成此操作。
这是我的html文件名:help.html 我以为我可以使用:help.html #top
这是我用来打开文件的代码,这很好用:
webbrowser.open("Files\help.html")
这是我一直试图在特定点打开的代码,ie9显然无法显示(不知道为什么它试图加载ie9因为chrome是我的默认浏览器,并且上面的工作加载了铬):
webbrowser.open("Files\help.html#2.1.0")
任何想法的人?
答案 0 :(得分:3)
webbrowser.open()
从命令行调用浏览器。所以你可能先尝试自己做。如果这不起作用,那么您的浏览器可能不支持本地文件或其他内容。
以Ubuntu + Firefox为例,webbrowser.open()
可以满足您的要求。 (但是 - 正如Dave Webb在他的回答中所说的那样 - 你必须提供file:
网址,而不仅仅是文件名。
(目前不在Windows上,所以没有在那里检查)
至于为什么它不加载chrome而是ie9 :(如果你愿意,你可以自己查看webbrowser.py代码)我认为它确实尝试使用你的默认webbrowser,通过os.startfile(url)
。当您在命令行中键入help.html
(根据需要调整路径)时双击help.html文件会发生什么?它也应该这样做。
编辑:
似乎并不总是使用命令行。在Windows上,当尝试使用默认浏览器时,它使用os.startfile()
,后者又使用win32 ShellExecute
api。 ShellExecute
可用于对文件,文件夹或URL执行某些操作,例如“打开”,“编辑”或“打印”及其默认应用程序。在这种情况下,系统会要求ShellExecute
“打开”该网址。
但是,ShellExecute
似乎在打开#
网址时忽略了片段标识符(file:
之后的部分)。奇怪的是,http:
网址不是这种情况。据推测,file:
url最初只是转换为普通文件名。
除了:
之外,你几乎无能为力webbrowser
模块的浏览器控制器,并使用webbrowser.get()
获取控制器,请参阅docs)< / LI>
BROWSER
环境变量(请参阅webbrowser module docs)或者,最简单的方法:因为您似乎在Windows上:只是尝试专门打开Internet Explorer:
try:
browser = webbrowser.get('c:\\Program Files\\Internet Explorer\\IEXPLORE.EXE')
except Webbrowser.Error:
browser = webbrowser.get()
browser.open(url)
(这将回退到使用默认值,因此您的代码仍可在其他平台上运行)
答案 1 :(得分:1)