调用 python webbrowser 时抑制/重定向 stderr

发布于 2024-08-02 20:54:51 字数 407 浏览 6 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

昔日梦未散 2024-08-09 20:54:51

webbrowser.get() 给你带来了什么?

如果这样做,

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

那么您不应该看到任何输出。 webbrowser 模块选择为某些浏览器保留 stderr - 特别是文本浏览器,以及不确定的浏览器。对于所有将背景设置为 True 的 Unix 浏览器,不应显示任何输出。

What is webbrowser.get() giving you?

If you do

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

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.

情丝乱 2024-08-09 20:54:51

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

What about sending the output to /dev/null instead of a temporary file?

木槿暧夏七纪年 2024-08-09 20:54:51

我认为 Martin 对于 Unix 系统的看法是正确的,但在 Windows 上情况似乎有所不同。这是在Windows系统上吗?

webbrowser.py 要么会给你一个 webbrowser.WindowsDefault 浏览器,它使用以下命令打开 url

os.startfile(url)

,或者如果 Firefox 存在,它会给你一个 webbrowser.BackgroundBrowser,它在 Windows 上启动浏览器,使用:

p = subprocess.Popen(cmdline)

在 Windows 上,看起来 就像只有 Unix 浏览器才有能力在 webbrowser 模块中重定向 stderr 一样。 执行操作来找出您所获得的浏览器类型。

>>> webbrowser.get('firefox')

您应该能够通过在 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

os.startfile(url)

or if Firefox is present it's going to give you a webbrowser.BackgroundBrowser, which starts the browser on Windows using:

p = subprocess.Popen(cmdline)

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

>>> webbrowser.get('firefox')

In a Python interactive console.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文