我使用以下代码在Linux/OSX上为一个Python库隐藏stderr,该库不受我控制,默认情况下它会写入stderr:
f = open("/dev/null","w")
zookeeper.set_log_stream(f)
是否有一个简单的跨平台替代/dev/null?理想情况下,它不会消耗内存,因为这是一个长时间运行的进程。
发布于 2010-05-28 22:40:08
那os.devnull呢?
import os
f = open(os.devnull,"w")
zookeeper.set_log_stream(f)
发布于 2010-05-28 22:40:58
class Devnull(object):
def write(self, *_): pass
zookeeper.set_log_stream(Devnull())
当然,打开os.devnull
也很好,但是通过这种方式,每个输出操作都会发生(作为noop)“在进程中”--不需要在操作系统之间来回切换上下文,也不需要缓冲(虽然一些缓冲通常由open
使用),因此占用的内存更少。
发布于 2010-05-28 22:40:27
>>> import os
>>> os.devnull
'nul'
https://stackoverflow.com/questions/2929899
复制相似问题