我正在使用以下代码在Linux/OSX上为Python库隐藏stderr我默认不控制写入stderr:
f = open("/dev/null","w") zookeeper.set_log_stream(f)
是否有一个简单的跨平台替代/ dev/null?理想情况下,它不会消耗内存,因为这是一个长时间运行的过程.
os.devnull怎么样?
import os f = open(os.devnull,"w") zookeeper.set_log_stream(f)
class Devnull(object): def write(self, *_): pass zookeeper.set_log_stream(Devnull())
os.devnull
当然打开也很好,但是这样每个输出操作都会发生(作为noop)"正在进行中" - 没有上下文切换到操作系统并返回,也没有缓冲(虽然一些缓冲通常由a使用open
)因此甚至更少的内存消耗.
>>> import os >>> os.devnull 'nul'
创建自己的文件类对象,什么都不做?
class FakeSink(object): def write(self, *args): pass def writelines(self, *args): pass def close(self, *args): pass