调用 python webbrowser 时抑制/重定向 stderr
我有一个 python 程序,可以在新的浏览器窗口中的单独选项卡中打开多个 url,但是当我从命令行运行该程序并使用
webbrowser.open_new(url)
The stderr from firefox prints to bash 打开浏览器时。查看文档,我似乎找不到重定向或抑制它们的方法,
我不得不使用
browserInstance = subprocess.Popen(['firefox'], stdout=log, stderr=log)
Where log is a tempfile &然后使用 webbrowser.open_new 打开其他选项卡。
有没有办法在网络浏览器模块中执行此操作?
I have a python program that opens several urls in seperate tabs in a new browser window, however when I run the program from the command line and open the browser using
webbrowser.open_new(url)
The stderr from firefox prints to bash. Looking at the docs I can't seem to find a way to redirect or suppress them
I have resorted to using
browserInstance = subprocess.Popen(['firefox'], stdout=log, stderr=log)
Where log is a tempfile & then opening the other tabs with webbrowser.open_new.
Is there a way to do this within the webbrowser module?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
webbrowser.get() 给你带来了什么?
如果这样做,
那么您不应该看到任何输出。 webbrowser 模块选择为某些浏览器保留 stderr - 特别是文本浏览器,以及不确定的浏览器。对于所有将背景设置为 True 的 Unix 浏览器,不应显示任何输出。
What is webbrowser.get() giving you?
If you do
then you shouldn't see any output. The webbrowser module choses to leave stderr for some browsers - in particular the text browsers, and then ones where it isn't certain. For all UnixBrowsers that have set background to True, no output should be visible.
将输出发送到
/dev/null
而不是临时文件怎么样?What about sending the output to
/dev/null
instead of a temporary file?我认为 Martin 对于 Unix 系统的看法是正确的,但在 Windows 上情况似乎有所不同。这是在Windows系统上吗?
webbrowser.py 要么会给你一个 webbrowser.WindowsDefault 浏览器,它使用以下命令打开 url
,或者如果 Firefox 存在,它会给你一个 webbrowser.BackgroundBrowser,它在 Windows 上启动浏览器,使用:
在 Windows 上,看起来 就像只有 Unix 浏览器才有能力在 webbrowser 模块中重定向 stderr 一样。 执行操作来找出您所获得的浏览器类型。
您应该能够通过在 Python 交互式控制台中
I think Martin is right about Unix systems, but it looks like things are different on Windows. Is this on a Windows system?
On Windows it looks like webbrowser.py is either going to give you a webbrowser.WindowsDefault browser, which opens the url using
or if Firefox is present it's going to give you a webbrowser.BackgroundBrowser, which starts the browser on Windows using:
It looks like only Unix browsers have the ability to redirect stderr in the webbrowser module. You should be able to find out what browser type you're getting by doing
In a Python interactive console.