2016-09-02 5 views
5

मेरी समझ से है,क्या के बीच 'खुला के साथ (...)' 'को बंद करने के साथ() खुला (...)' अंतर और

with open(...) as x: 

एक बार with फ़ाइल को बंद करने के लिए माना जाता है बयान पूरा हालांकि, अब मैं एक ही स्थान पर

with closing(open(...)) as x: 

देखते हैं, चारों ओर देखा और पता लगा, कि closingwith बयान के खत्म होने पर फ़ाइल को बंद करने के लिए माना जाता है।

तो, फ़ाइल को बंद करने और closing फ़ाइल के बीच क्या अंतर है?

+0

'समापन' के लिए "एक स्थान" क्या था? यह एक अंतर्निहित चीज़ की तरह प्रतीत नहीं होता है। 'With' के साथ खोलने का बिंदु बिल्कुल ठीक है कि फ़ाइल बंद है * कोई फर्क नहीं पड़ता *। –

+1

@AndrasDeak आप इसे पायथन दस्तावेज़ में देख सकते हैं: इस मामले में https://docs.python.org/3.5/library/contextlib.html – Barmar

+0

'contextlib.closing' की आवश्यकता नहीं है। –

उत्तर

15

मानते हैं कि contextlib.closing और मानक, निर्मित open, closing यहां अनावश्यक है। यह एक रैपर है जो आपको with ऑब्जेक्ट्स का उपयोग करने की अनुमति देता है जिसमें close विधि है, लेकिन संदर्भ प्रबंधक के रूप में उपयोग का समर्थन नहीं करते हैं। चूंकि open द्वारा लौटाई गई फ़ाइल ऑब्जेक्ट्स संदर्भ प्रबंधक हैं, closing अनियंत्रित है।

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