2015-10-09 122 views
7

我使用了一些圖書館,我不能編輯它的來源。在庫中有一個函數需要調用,當我調用它時,它會生成我想要的這個文件;然而,與此同時,它將這個警告顯示在屏幕上數百次。警告總是一樣的。防止串被打印蟒蛇

Warning during export : no corresponding GDSII layer found for process and purpose

這是一種惱人的,讓我打印什麼標準輸出/標準錯誤沒用,因爲它只是獲取與此愚蠢的警告淹沒。

我知道如何通過簡單地賦予它們不同的文件標準輸出/標準錯誤重定向。是否有可能簡單地檢查將寫入stdout/stderr的內容,如果是該字符串則將其丟棄,否則將其打印出來?

+1

有沒有理由不能編輯庫? – intboolstring

+0

你試過[-W](https://docs.python.org/2/using/cmdline.html#cmdoption-W)標誌嗎? – sam

+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 

希望它能幫助!

+0

謝謝你,當然有幫助!似乎有一個奇怪的問題,讓它爲python 2.7工作。我在'super().__ init __(stdout)'得到錯誤:'attribute error:readable'。任何想法爲什麼?谷歌搜索似乎沒有透露太多。 –

+1

@ Jean-Luc不客氣。查看2.x版本的更新! – cdonts