python 的 webbrowser 在 Windows 相对路径上启动 IE,而不是默认浏览器

2023-12-13

我正在尝试在默认浏览器中从 python 启动本地 html 文件(现在我的默认浏览器是 Google Chrome,如果我双击 .html 文件,Chrome 就会启动。)

当我使用 python 时webbrowser.open(),IE 启动,但地址栏为空白。

Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import webbrowser
>>> filename = 'test.html'
>>> webbrowser.open('file://'+filename)
True
>>> print(webbrowser.get().__class__.__name__)
WindowsDefault

我检查了我的默认程序,它们看起来是正确的。我用的是Win 7 SP1。为什么 Chrome 无法启动?

Update:代码将在未知的操作系统和机器上运行,因此不能选择硬编码或注册浏览器或路径更新。我在想解析 urlfile://然后做一个os.path.exists检查和os.path.realpath也许就是答案。


我的主要问题是尝试添加错误的 URLfile://到相对路径。可以这样修复:

webbrowser.open('file://' + os.path.realpath(filename))

Using webbrowser.open将尝试多种方法,直到一种“成功”,这是一个宽松的定义。

The WindowsDefault班级电话os.startfile()失败并返回False。我可以通过在 Windows 运行命令中输入 URL 并看到错误消息而不是浏览器来验证这一点。

Both GenericBrowser and BackgroundBrowser将会通知subprocess.Popen()即使 URL 错误,exe 也会成功,并返回True。 IE 没有给出任何有关该问题的指示,所有其他浏览器都有一条很好的消息说它们找不到该文件。

  1. GenericBrowser由环境变量设置BROWSER并且是第一。
  2. WindowsDefault是第二。
  3. BackgroundBrowser是最后一个,如果没有其他办法的话,包括后备 IE。

这是我原来的设置:

>>> import webbrowser
>>> webbrowser._tryorder
['windows-default',
 'C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE']
>>> webbrowser._browsers.items()
[('windows-default', [<class 'webbrowser.WindowsDefault'>, None]),
 ('c:\\program files\\internet explorer\\iexplore.exe', [None, <webbrowser.BackgroundBrowser object at 0x00000000022E3898>])]
>>>

这是我修改环境变量后的设置:

C:>path=C:\Program Files (x86)\Mozilla Firefox;%path%

C:>set BROWSER=C:\Users\Scott\AppData\Local\Google\Chrome\Application\chrome.exe

C:>python
Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import webbrowser
>>> webbrowser._tryorder
['C:\\Users\\Scott\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe',
 'windows-default',
 'firefox',
 'C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE']
>>> webbrowser._browsers.items()
[('windows-default', [<class 'webbrowser.WindowsDefault'>, None]),
 ('c:\\program files\\internet explorer\\iexplore.exe',[None, <webbrowser.BackgroundBrowser object at 0x000000000235E828>]),
 ('firefox', [None, <webbrowser.BackgroundBrowser object at 0x000000000235E780>]),
 ('c:\\users\\scott\\appdata\\local\\google\\chrome\\application\\chrome.exe', [None, <webbrowser.GenericBrowser object at 0x000000000235E8D0>])]
>>>

The webbrowser._tryorder给出尝试过的浏览器列表。注册 chrome 或添加浏览器环境变量或修改我的路径都会让我获得正确的浏览器和更好的错误消息。

感谢您的帮助,没有您的想法我无法解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 的 webbrowser 在 Windows 相对路径上启动 IE,而不是默认浏览器 的相关文章

  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • Pandas/Google BigQuery:架构不匹配导致上传失败

    我的谷歌表中的架构如下所示 price datetime DATETIME symbol STRING bid open FLOAT bid high FLOAT bid low FLOAT bid close FLOAT ask open
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只

随机推荐

  • F2PY找不到模块

    我在 Python 中使用 f2py 编译模块时遇到困难 我有一个用 Fortran 编写的软件 可以在 Linux 64 位机器上编译良好 此外 F2Py 还编译了一个使用 Fortran 位的 Python 模块 Python 模块的编
  • 如何使用 C++ 检查进程是否正在运行

    如果一个进程没有运行 我不应该显示某些上下文菜单选项 我正在使用进程名称检查进程是否正在运行 但问题是 进程名称在不同的 Windows 平台上显示方式不同 即 Windows 任务栏上的 Windows 64 位进程名称是 应用程序名 e
  • 解密 TripleDES“坏数据”

    我是加密 解密新手 我正在尝试解密已加密且长度为 44 个字符的输入字符串 这是我到目前为止所拥有的 但当它尝试执行 TransformFinalBlock 函数时 我不断收到 坏数据 public static String Decryp
  • 如何将 getElementById 切换为 getElementsByClassName [重复]

    这个问题在这里已经有答案了 我试图将 getElementById 切换为 getElementsByClassName 对于这样的项目 http jsfiddle net 2waZ2 21 我的简单努力不起作用 http jsfiddle
  • 删除 Chrome 的“翻译”DOM 属性

    我正在处理一些遗留代码 其中原始开发人员大量使用生成具有名为的非标准属性的 HTML DOM 节点translate span My Account span 然后使用 JavaScript 代码遍历 搜索这些节点 如下所示 if tar
  • 为什么“值”之和不等于 scikit-learn RandomForestClassifier 中“样本”的数量?

    我通过 RandomForestClassifier 构建了一个随机森林并绘制了决策树 参数 值 红色箭头所指 是什么意思 为什么 中两个数字的总和不等于 样本 的数量 我看到了一些其他的例子 中的两个数字之和等于 样本 的数量 为什么我的
  • VBScript 的正则表达式负向后查找替代方案

    由于 VBScript 不支持lookbehinds 我正在寻找替代解决方案 我有字符串 E F 我想用 替换 F 但前提是它前面没有 E 替换后 我希望 E F 为 E F 如果字符串是 randomText F 我希望它在替换后看起来像
  • Android 通讯录 - 更新说明

    我正在使用新的 API 来插入 更新手机上的联系人 并且我正在使用此方法来更新它们 String selectArgs1 Data CONTACT ID AND Data MIMETYPE Note CONTENT ITEM TYPE AN
  • 为什么 file.write 返回一个 int ?

    Why is MT2这里有一个 int 当我运行代码时 Python 给出了一个错误 如果都是数字的话 不应该只是一个 int 吗 MT1 open mean temp txt a Write a new line for Rio de J
  • 禁用 Safari 自动填充用户名和密码

    您可能已经知道 Safari 有一个令人讨厌的自动填充错误 无论您是否设置 它都会填充电子邮件 用户名和密码字段autocomplete off or not 这是一个基本形式
  • 动画 iMessage 应用程序图形

    我正在创建自己的 iMessage 自定义应用程序 我只想发送一个带有在 2 个图像之间交换背景的 iMessage 从而创建动画的错觉 我什至不确定这是否可能 但我正在尝试使用下面的代码 此代码仅在收件人收到消息时显示第一张图像 任何帮助
  • 如何禁用 R 中绘图的缩放?

    我没有找到在绘图上禁用鼠标光标缩放模式的参数 这很糟糕 因为当您在手机上拖动手指时 缩放会增加 利用这个问题 我想从绘图中删除所有按钮 只留下下载图像的按钮 您可以做很多事情 按钮行在plotly称为 模式栏 您可以完全删除它 或从中删除特
  • 如何独立检测两个部分重叠的

    我的情况是这样的 我有 2 个部分重叠的 div 每个都有悬停效果 Div 1 包含一个条形图 其中的条形对悬停有影响 Div 2 是一个跨越屏幕底部 20 的区域 当用户将鼠标悬停在其上方 例如 靠近屏幕底部 时 控件会从底部向上滑动 以
  • Solr:使用正则表达式片段提取段落

    我将此消息发布到 Solr 邮件列表 但我也在此处尝试 以防周围潜伏着 Solr 专家 我正在尝试使用正则表达式碎片器 但很难获得我想要的结果 我试图获取以单词字符开头并以标点符号结尾的片段 但由于某种原因 返回给我的片段似乎非常不灵活 尽
  • 如何获取firebase firestore android中某些字段的值?

    就像上面的问题一样 我想获取 firebase firestore 中某些字段的值 而不是所有文档文档快照 在 SQL 中就像这样SELECT col 1 col 2 col 3 FROM table name 我该怎么做 感谢您的帮助 C
  • Visual Studio 2015 Enterprise Update 1 针对 Windows XP

    我想知道我们是否可以使用可以在 Windows xp 上运行的 Visual Studio 2015 构建项目 二进制文件 如果支持的话我们该如何构建 为 Windows XP 配置 C 11 程序 Visual Studio 中包含的 W
  • ChartJS 中线段的不同颜色

    我有一个时间线图表类型 我想根据数据集对象值定义两个点之间每一步的颜色 在我的数据集数据数组中 我添加了第三个项目 它将定义颜色 if green gt gt red 实际上我试图只使用红色 我已经发现一个工作示例 关于如何做到这一点 但它
  • 根据标题将文本转换为 data.frame

    我上传了一个 txt文件到R如下 Election Parties lt readr read lines Election Parties txt 假设文件中包含以下文本 BOLIVIA P17 Nationalist Revolutio
  • pandas 警告 pd.to_datetime

    Using pandas 0 6 2 我想将数据框更改为datetime类型 这是数据框 gt gt gt tt head 0 2015 02 01 00 46 28 1 2015 02 01 00 59 56 2 2015 02 01 0
  • python 的 webbrowser 在 Windows 相对路径上启动 IE,而不是默认浏览器

    我正在尝试在默认浏览器中从 python 启动本地 html 文件 现在我的默认浏览器是 Google Chrome 如果我双击 html 文件 Chrome 就会启动 当我使用 python 时webbrowser open IE 启动