अक्सर मुझे डेटा को फाइल करने के लिए आउटपुट की आवश्यकता होती है या, यदि फ़ाइल निर्दिष्ट नहीं की जाती है, तो stdout करने के लिए। मैं निम्नलिखित स्निपेट का उपयोग करता हूं:
if target:
with open(target, 'w') as h:
h.write(content)
else:
sys.stdout.write(content)
मैं इसे फिर से लिखना और समान रूप से दोनों लक्ष्यों को संभालना चाहूंगा।
आदर्श मामले में यह होगा:
with open(target, 'w') as h:
h.write(content)
लेकिन यह अच्छी तरह से काम नहीं करेगा क्योंकि withब्लॉक छोड़ने पर sys.stdout बंद हो जाता है और मैं ऐसा नहीं चाहता। मैं न तो चाहता हूं
stdout = open(target, 'w')
...
क्योंकि मुझे मूल स्टडआउट को पुनर्स्थापित करने के लिए याद रखना होगा।
सम्बंधित:
- पायथन में एक फ़ाइल पर रीडायरेक्ट करें?
- हैंडलिंग अपवाद - सी ++ की तुलना में पायथन में अपवादों से निपटने के बारे में दिलचस्प लेख
संपादित करें
मुझे पता है कि मैं लपेट सकता हूं target, अलग फ़ंक्शन को परिभाषित कर सकता हूं या संदर्भ प्रबंधक का उपयोग कर सकता हूं । मैं एक सरल, सुरुचिपूर्ण, मुहावरेदार समाधान फिटिंग की तलाश करता हूं जिसे 5 से अधिक लाइनों की आवश्यकता नहीं होगी