मैं एक अस्थायी निर्देशिका के साथ काम कर रहा हूं और मैं यह सुनिश्चित करना चाहता हूं कि यह प्रोग्राम बंद हो जाए (चाहे कार्यक्रम सफल हुआ हो)। मैं निर्देशिका बनाने में tempfile.mkdtemp
उपयोग कर रहा हूँ और उस str
का एक उपवर्ग में बनने वाले स्ट्रिंग है कि इसके __del__
आदेश पर निर्देशिका हटाता डाल:आप एक अस्थायी निर्देशिका का प्रबंधन कैसे करते हैं जैसे कि इसे प्रोग्राम पर बंद होने की गारंटी है?
import shutil
import tempfile
class TempDir(str):
""" container for temporary directory.
Deletes directory when garbage collected/zero references """
def __del__(self):
shutil.rmtree(self.__str__(), onerror=my_error_fn)
dbdir = TempDir(tempfile.mkdtemp())
यहाँ क्या मुझे यकीन है कि के बारे में नहीं कर रहा हूँ: या यदि प्रोग्राम बंद कर देता है एक कीबोर्ड इंटरप्ट होता है, क्या पाइथन स्वचालित रूप से सभी चरों को एकत्रित/कचरा हटा देगा? यदि नहीं, तो मैं यह कैसे सुनिश्चित कर सकता हूं कि निर्देशिका हटा दी जाए?
creating destructor methods in Python के बारे में संबंधित जानकारी। ऐसा लगता है कि TempDir ऑब्जेक्ट किसी अन्य संदर्भ का संदर्भ नहीं देता है, __del__
का उपयोग करके इसे ठीक करना चाहिए।
आपने इसका परीक्षण कब किया है? क्या हर बार Ctrl + C '__del__' निष्पादित करता है? –
ठीक है, बस मेरे परीक्षण के परिणाम जोड़े गए - सुझाव @ जोएल कॉर्नेट के लिए बहुत बहुत धन्यवाद! –
'__del__' के अतिरिक्त' atexit' मॉड्यूल का उपयोग करने पर विचार करें। – martineau