调用Python网页浏览器时抑制/重定向stderr

6 投票
3 回答
1372 浏览
提问于 2025-04-15 13:57

我有一个Python程序,它可以在新的浏览器窗口中打开多个网址,每个网址都在不同的标签页里。不过,当我从命令行运行这个程序并用

webbrowser.open_new(url)

打开浏览器时,Firefox的错误信息会显示在bash里。我查看了文档,似乎找不到方法来重定向或屏蔽这些错误信息。

我现在只能使用

browserInstance = subprocess.Popen(['firefox'], stdout=log, stderr=log)

其中log是一个临时文件,然后用webbrowser.open_new打开其他标签页。

请问有没有办法在webbrowser模块内做到这一点呢?

3 个回答

0

那把输出发送到 /dev/null 而不是临时文件怎么样呢?

0

我觉得马丁说的关于Unix系统的事情是对的,但在Windows上似乎情况有所不同。这是在Windows系统上吗?

在Windows上,webbrowser.py这个模块要么会给你一个webbrowser.WindowsDefault浏览器,这个浏览器会用下面的方式打开网址:

os.startfile(url)

要么如果你的电脑上安装了Firefox,它会给你一个webbrowser.BackgroundBrowser,这个浏览器会用下面的方式在Windows上启动:

p = subprocess.Popen(cmdline)

看起来只有Unix系统的浏览器才能在webbrowser模块中重定向错误输出。你可以通过在Python的交互式控制台中执行下面的代码来找出你正在使用的浏览器类型:

>>> webbrowser.get('firefox')

在Python的交互式控制台中运行这个命令。

6

webbrowser.get() 给你什么?

如果你执行

 webbrowser.get('firefox').open(url)

那么你应该不会看到任何输出。webbrowser 模块选择在某些浏览器中不显示错误信息,特别是文本浏览器,以及那些不确定的浏览器。对于所有将背景设置为 True 的 Unix 浏览器,应该不会有任何输出。

撰写回答