2015-10-09 26 views
7

Bazı kütüphane kullanıyorum ve kaynağını düzenleyemiyorum. Kütüphanede aramak zorunda olduğum bir fonksiyon var ve onu aradığımda istediğim bu dosyayı yapıyor; bununla birlikte, aynı zamanda bu uyarıyı yüzlerce kez ekrana yazdırır. Uyarı her zaman aynıdır.Dize yazdırılan python'u engelle

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

Bu can sıkıcı türüdür ve sadece bu saçma uyarıyla sular altında olur çünkü beni, stdout/stderr yararsız bir şey baskı yapar.

Stdout/stderr'i nasıl farklı bir dosya atayarak yeniden yönlendirmeyi biliyorum. Stdout/stderr'e ne yazılacağını kontrol etmek mümkün mü, yoksa eğer o dize yoksa atın, yazdırın mı? Ben böyle bir şey kullanmak

+1

Kitaplığı düzenleyememenizin bir nedeni var mı? – intboolstring

+0

[-W] (https://docs.python.org/2/using/cmdline.html#cmdoption-W) bayrağını denediniz mi? – sam

+0

Evet, bu benim kütüphanem değil ve sahip sunucularından geliyor. Aynı zamanda, ticaretle uğraşma sürecinde. –

cevap

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 

yardımcı olur Umut!

+0

Bunun için teşekkürler, kesinlikle yardımcı olur! Python 2.7 için çalışmak için garip bir sorun var gibi görünüyor. "Super() .__ init __ (stdout)' da ": error error: readable" hatası alıyorum. Herhangi bir fikir neden? Bir Google araması çok fazla görünmüyordu. –

+1

@ Jean-Luc Rica ederim. 2.x sürümü için güncellemeye bakın! – cdonts

İlgili konular