防止字符串被打印python

Jea*_*Luc 7 python io stdout output

我正在使用一些库,我无法编辑它的源代码.我必须调用库中的一个函数,当我调用它时,它会生成我想要的文件; 但是,与此同时,它会将此警告数百次打印到屏幕上.警告总是一样的.

导出期间警告:未找到相应的GDSII层用于过程和目的

这有点烦人,让我打印任何东西给stdout/stderr都没用,因为它只是充斥着这个愚蠢的警告.

我知道如何通过简单地为它们分配不同的文件来重定向stdout/stderr.是否可以简单地检查将写入stdout/stderr的内容,如果是该字符串则丢弃它,否则,打印它?

cdo*_*nts 8

我会用...

3.X

import sys
from _io import TextIOWrapper

class StdoutFilter(TextIOWrapper):

    def __init__(self, stdout):
        super().__init__(stdout)
        self.stdout = stdout

    def write(self, output):
        if output != "don't write this":
            self.stdout.write(output)

sys.stdout = StdoutFilter(sys.stdout)

print("hello, world!")
print("don't write this")

sys.stdout = sys.__stdout__
Run Code Online (Sandbox Code Playgroud)

2.X

from StringIO import StringIO

class StdoutFilter(StringIO):

    def __init__(self, stdout):
        StringIO.__init__(self, stdout)
        self.stdout = stdout
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!