调用Python网页浏览器时抑制/重定向stderr
我有一个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 浏览器,应该不会有任何输出。