2015-10-09 16 views
7

Ich benutze einige Bibliothek und ich kann nicht die Quelle bearbeiten. Es gibt eine Funktion in der Bibliothek, die ich aufrufen muss, und wenn ich sie anrufe, macht sie diese Datei, die ich will; Gleichzeitig wird diese Warnung jedoch hunderte Male auf dem Bildschirm ausgegeben. Die Warnung ist immer gleich.Verhindern Zeichenfolge wird gedruckt Python

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

Dies ist eine Art ärgerlich und macht ich etwas zu stdout Druck/stderr nutzlos, weil es nur mit dieser dummen Warnung überflutet wird.

Ich kann stdout/stderr umleiten, indem Sie ihnen einfach eine andere Datei zuweisen. Ist es möglich, einfach zu überprüfen, was in stdout/stderr geschrieben wird, verwerfen Sie es, wenn es diese Zeichenfolge ist, andernfalls drucken Sie es aus?

+1

Gibt es einen Grund, warum Sie die Bibliothek nicht bearbeiten können? – intboolstring

+0

Haben Sie [-W] (https://docs.python.org/2/using/cmdline.html#cmdoption-W) -Flag versucht? – sam

+0

Ja, es ist nicht meine Bibliothek, und es läuft vom Server des Eigentümers. Es wird auch kommerzialisiert. –

Antwort

8

ich so etwas wie ...

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 

Hoffe, es hilft verwenden würde!

+0

Danke dafür, hilft sicherlich! Es scheint ein seltsames Problem zu sein, das es für Python 2.7 funktioniert. Ich bekomme den Fehler: 'Attributfehler: lesbar' bei' super() .__ init __ (stdout) '. Irgendwelche Ideen warum? Eine Google-Suche schien nicht viel zu verraten. –

+1

@ Jean-Luc Gern geschehen. Siehe das Update für die 2.x-Version! – cdonts

Verwandte Themen