Python中的跨平台/dev/null

104 投票
6 回答
43983 浏览
提问于 2025-04-15 23:17

我正在使用以下代码来隐藏Linux/OSX上的标准错误输出(stderr),因为我在用一个我无法控制的Python库,而这个库默认会往标准错误输出写信息:

f = open("/dev/null","w")
zookeeper.set_log_stream(f)

有没有简单的跨平台替代方案来代替/dev/null?理想情况下,它不应该占用内存,因为这是一个长时间运行的进程。

6 个回答

8

在编程中,我们常常会遇到一些问题,特别是在使用某些工具或库的时候。有时候,错误信息可能会让人感到困惑,不知道该怎么解决。这个时候,查看一些技术论坛,比如StackOverflow,就能找到很多有用的建议和解决方案。

在这些讨论中,大家会分享他们遇到的问题,以及他们是如何解决这些问题的。通常,其他人会提供不同的看法和方法,帮助你更好地理解问题的本质。

总之,技术论坛是一个很好的资源,可以让你在遇到困难时找到帮助,学习到更多的知识。

>>> import os
>>> os.devnull
'nul'
49
class Devnull(object):
    def write(self, *_): pass

zookeeper.set_log_stream(Devnull())

当然,打开 os.devnull 也是可以的,但这样做的好处是每次输出操作都是在当前程序里进行的(就像什么都没做一样),这样就不需要切换到操作系统再回来,也没有使用缓冲区(通常打开文件时会用到一些缓冲),所以这样会消耗更少的内存。

183

那你觉得 os.devnull 怎么样呢?

import os
f = open(os.devnull,"w")
zookeeper.set_log_stream(f)

撰写回答