2015-10-09 8 views
7

मैं कुछ लाइब्रेरी का उपयोग कर रहा हूं और मैं इसके स्रोत को संपादित नहीं कर सकता। लाइब्रेरी में एक फ़ंक्शन है जिसे मुझे कॉल करना है, और जब मैं इसे कॉल करता हूं, तो यह वह फ़ाइल बनाता है जो मैं चाहता हूं; हालांकि, साथ ही, यह इस चेतावनी को सैकड़ों बार स्क्रीन पर प्रिंट करता है। चेतावनी हमेशा एक ही है।स्ट्रिंग मुद्रित पाइथन

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

यह कष्टप्रद की तरह है और मुझे stdout/stderr बेकार करने के लिए कुछ भी मुद्रण, क्योंकि यह सिर्फ इस मूर्खतापूर्ण चेतावनी के साथ बाढ़ आ गई हो जाता है बनाता है।

मुझे पता है कि कैसे उन्हें एक अलग फ़ाइल असाइन करके stdout/stderr को पुनर्निर्देशित करना है। क्या यह जांचना संभव है कि stdout/stderr को क्या लिखा जाएगा, अगर यह स्ट्रिंग है, तो इसे छोड़ दें, अन्यथा, इसे प्रिंट करें?

+1

क्या कोई कारण है कि आप लाइब्रेरी को संपादित नहीं कर सकते हैं? – intboolstring

+0

क्या आपने कोशिश की [-W] (https://docs.python.org/2/using/cmdline.html#cmdoption-W) ध्वज? – sam

+0

हां, यह मेरी लाइब्रेरी नहीं है, और यह मालिक सर्वर से चल रहा है। यह commericialised होने की प्रक्रिया में भी है। –

उत्तर

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

इसके लिए धन्यवाद, निश्चित रूप से मदद करता है! पाइथन 2.7 के लिए काम करने में एक अजीब समस्या प्रतीत होती है। मुझे त्रुटि मिलती है: 'विशेषता त्रुटि: 'सुपर() .__ init __ (stdout) पर पठनीय''। कोई विचार क्यों? एक Google खोज ज्यादा प्रकट नहीं हुई थी। –

+1

@ जीन-लुक आपका स्वागत है। 2.x संस्करण के लिए अद्यतन देखें! – cdonts

संबंधित मुद्दे