FogleBird के उत्तर पर विस्तार करने के लिए, यदि आप इसे स्पष्ट रूप से बंद नहीं करते हैं तो फ़ाइल ऑब्जेक्ट नष्ट होने पर फ़ाइल स्वचालित रूप से बंद हो जाएगी। सीपीथॉन में यह जल्द ही होगा जैसे कि इसके कोई और संदर्भ नहीं हैं, उदा। यदि यह एक फ़ंक्शन में स्थानीय चर है और फ़ंक्शन समाप्त होता है। हालांकि अगर फ़ंक्शन में कोई अपवाद फेंक दिया गया है और फ़ाइल को with
कथन या try:...finally:
का उपयोग करके स्पष्ट रूप से बंद नहीं किया गया है तो फ़ाइल का संदर्भ ट्रेसबैक ऑब्जेक्ट में स्टैक ट्रेस के हिस्से के रूप में रखा जाएगा और फ़ाइल बंद नहीं होगी कम से कम अगले अपवाद फेंक दिया जाता है।
इसके अलावा आयरनपीथन और जैथन क्रमशः नेट सीएलआर और जावा जेवीएम की कचरा संग्रहण सुविधाओं का उपयोग करते हैं। इन्हें संदर्भित नहीं किया गया है, इसलिए फ़ाइल तब तक अनिश्चित काल तक खुली रहेगी जब तक कि कचरा कलेक्टर ऑब्जेक्ट की स्मृति को पुनः प्राप्त करने का निर्णय नहीं लेता है या प्रोग्राम समाप्त हो जाता है।
तो आम तौर पर with:
या try:...finally:
का उपयोग करके फ़ाइल को स्पष्ट रूप से बंद करना महत्वपूर्ण है।
बेशक यह सब किसी अन्य प्रकार के ऑब्जेक्ट के लिए सच है जिसके लिए स्पष्ट सफाई की आवश्यकता है।
स्रोत
2010-03-08 20:55:52
बस उल्लेख करने के लिए: फ़ाइल एक फ़ाइल ऑब्जेक्ट देता है जिसमें एक करीबी विधि है। यह सबसे सीधा आगे समाधान होगा, लेकिन "साथ" स्पष्ट रूप से अच्छा है। – Achim
मुझे कोई समस्या है - मेरे पास पाइथन में 'साथ' नहीं है। क्या भविष्य से आयात करना ठीक है? मेरे पास पाइथन 2.5 है। – bodacydo
यदि आपके पास पाइथन 2.5 है, तो हाँ। –