【问题标题】:suppress/redirect stderr when calling python webrowser调用python webbrowser时抑制/重定向stderr
【发布时间】:2009-08-30 05:50:51
【问题描述】:

我有一个 python 程序,可以在新浏览器窗口的单独选项卡中打开几个 url,但是当我从命令行运行程序并使用

打开浏览器时
webbrowser.open_new(url)

来自 firefox 的 stderr 打印到 bash。查看文档,我似乎找不到重定向或抑制它们的方法

我已经使用了

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

其中 log 是一个临时文件,然后使用 webbrowser.open_new 打开其他选项卡。

有没有办法在 webbrowser 模块中做到这一点?

【问题讨论】:

    标签: python browser stderr


    【解决方案1】:

    webbrowser.get() 给你什么?

    如果你这样做

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        在 Windows 上,看起来 webbrowser.py 要么会给你一个 webbrowser.WindowsDefault 浏览器,它使用打开 url

        os.startfile(url)
        

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

        p = subprocess.Popen(cmdline)
        

        看起来只有 Unix 浏览器能够在 webbrowser 模块中重定向标准错误。你应该能够通过这样做找出你得到的浏览器类型

        >>> webbrowser.get('firefox')
        

        在 Python 交互式控制台中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-29
          • 2012-06-23
          • 1970-01-01
          • 1970-01-01
          • 2015-10-19
          相关资源
          最近更新 更多