read-only open() कॉन्टेक्स्ट मैनेजर
आपके अगले डीप लर्निंग प्रोजेक्ट के लिए आपके पास ढेर सारी डेटा फ़ाइलें हैं, जिन्हें इकट्ठा करने और साफ़ करने में आपको महीनों लगे. अगर ट्रेनिंग के लिए पढ़ते समय आप गलती से किसी फ़ाइल पर ओवरराइट कर दें, तो यह बहुत बुरा होगा. इसलिए आप अपने प्रोजेक्ट में इस्तेमाल करने के लिए open() का एक read-only संस्करण बनाना चाहते हैं.
साधारण open() कॉन्टेक्स्ट मैनेजर:
- एक फ़ाइलनाम और एक मोड लेता है (
'r'पढ़ने के लिए,'w'लिखने के लिए, या'a'append के लिए) - फ़ाइल को पढ़ने, लिखने, या append करने के लिए खोलता है
- फ़ाइल के रेफ़रेंस के साथ नियंत्रण वापस कॉन्टेक्स्ट को देता है
- कॉन्टेक्स्ट के ख़त्म होने का इंतज़ार करता है
- और फिर बाहर निकलने से पहले फ़ाइल बंद कर देता है
आपका कॉन्टेक्स्ट मैनेजर भी यही काम करेगा, बस फर्क यह होगा कि वह आर्ग्यूमेंट के रूप में केवल फ़ाइलनाम लेगा और फ़ाइल को सिर्फ़ पढ़ने के लिए खोलेगा.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Functions लिखना
अभ्यास निर्देश
open_read_only()से नियंत्रण कॉन्टेक्स्ट ब्लॉक को yield कीजिए, ताकिread_only_fileऑब्जेक्टmy_fileको असाइन हो जाए.- खुले हुए फ़ाइल हैंडल न छूटें, इसके लिए
read_only_fileके.close()मेथड का उपयोग कीजिए.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
@contextlib.contextmanager
def open_read_only(filename):
"""Open a file in read-only mode.
Args:
filename (str): The location of the file to read
Yields:
file object
"""
read_only_file = open(filename, mode='r')
# Yield read_only_file so it can be assigned to my_file
____ ____
# Close read_only_file
____.____()
with open_read_only('my_file.txt') as my_file:
print(my_file.read())