我使用的是某些库,但我无法编辑其来源。我必须调用库中的一个函数,当我调用它时,它会生成我想要的文件;但是,与此同时,它会将此警告数百次打印到屏幕上。警告总是一样的。
导出期间警告:找不到进程的相应GDSII层 和目的
这有点烦人,让我打印任何东西给stdout / stderr都没用,因为它只是充斥着这个愚蠢的警告。
我知道如何通过简单地为stdout / stderr分配不同的文件来重定向。是否可以简单地检查将写入stdout / stderr的内容,如果它是该字符串则丢弃它,否则,打印它?
答案 0 :(得分: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__
<强> 2.x的强>
from StringIO import StringIO
class StdoutFilter(StringIO):
def __init__(self, stdout):
StringIO.__init__(self, stdout)
self.stdout = stdout
希望它有所帮助!