【发布时间】:2015-02-05 10:22:09
【问题描述】:
我有一个在 Python 2.7 中使用 Gtk+ 3.10.8 在 Linux Mint 17.1 上运行的 GUI 应用程序。
应用程序使用 libvlc 库的 python 绑定来嵌入视频播放器。 libvlc 库使用 libav 进行视频处理。
我的问题是 libav 非常冗长并且会生成持续不断的警告流,而 libvlc 没有提供任何机制来更改或抑制它。
显然,可以通过运行 python 脚本来关闭噪音(例如):
$ ./myprogram.py &> /dev/null
我希望能够在程序中以编程方式实现相同的效果。我很乐意简单地禁止从外部库对标准输出的所有访问,但最终最好捕获该输出并实现一些日志记录。
我能找到的关于这个主题的所有示例都假设对外部流程进行更直接的控制,例如将其声明为子流程。当我无法从我的 Python 代码直接访问有问题的实际库 (libav) 时,还有其他方法吗?
编辑: 感谢大家的帮助,正确答案可以在: Python version of freopen(),回答 #3。
您只需要确保您没有从以任何方式干扰标准输出的 IDE 运行您的代码。交互式 IDE 倾向于这样做,并且会抛出如下错误:
AttributeError: FileWrapper instance has no attribute 'fileno'
【问题讨论】:
标签: python-2.7 stdout gtk3 libvlc libav