@FakeRainBrigand समाधान के आधार पर मैं एक सुरक्षित समाधान सुझा रहा हूं:
import os, sys
class HiddenPrints:
def __enter__(self):
self._original_stdout = sys.stdout
sys.stdout = open(os.devnull, 'w')
def __exit__(self, exc_type, exc_val, exc_tb):
sys.stdout.close()
sys.stdout = self._original_stdout
तो आप इसे इस तरह से उपयोग कर सकते हैं:
with HiddenPrints():
print("This will not be printed")
print("This will be printed as before")
यह बहुत सुरक्षित है क्योंकि आप स्टैडआउट को फिर से सक्षम करने के लिए नहीं भूल सकते हैं, जो अपवादों को संभालते समय विशेष रूप से महत्वपूर्ण है।
के बिना with
निम्नलिखित उदाहरण सक्षम / अक्षम प्रिंट कार्यों का उपयोग करता है जो पिछले उत्तर में सुझाए गए थे।
कल्पना कीजिए कि एक कोड है जो एक अपवाद को बढ़ा सकता है। हमें finally
किसी भी मामले में प्रिंट को सक्षम करने के लिए कथन का उपयोग करना था ।
try:
disable_prints()
something_throwing()
enable_prints()
except ValueError as err:
handle_error(err)
finally:
enable_prints()
यदि आप finally
क्लॉज़ को भूल गए हैं , तो आपका कोई भी print
कॉल अब और प्रिंट नहीं करेगा।
यह with
कथन का उपयोग करने के लिए सुरक्षित है , जो यह सुनिश्चित करता है कि प्रिंट को फिर से जोड़ा जाएगा।
ध्यान दें: यह उपयोग करने के लिए सुरक्षित नहीं है sys.stdout = None
, क्योंकि कोई भी तरीकों को कॉल कर सकता हैsys.stdout.write()