जब आप किसी फ़ाइल ऑब्जेक्ट को पायथन प्रोग्राम में पढ़ते हैं और संशोधित करना चाहते हैं, तो इसे दो तरीकों से किया जा सकता है। पहला तरीका भौतिक भंडारण ड्राइव में सामग्री को संशोधित करना है जहां फ़ाइल स्थित है और दूसरा तरीका यह है कि इसे सीधे सिस्टम की मेमोरी या राम में संशोधित किया जाए। इस लेख में हम देखेंगे कि पायथन में उपलब्ध एमएमएपी मॉड्यूल का उपयोग करके फ़ाइल ऑब्जेक्ट की सामग्री को कैसे पढ़ना, खोजना और संशोधित करना है। सिस्टम कॉल जैसे ओपन, रीड और फाइल में हेरफेर करने के बजाय, मेमोरी-मैपिंग फ़ाइल के डेटा को मेमोरी में डालता है जो आपको सीधे मेमोरी में फाइलों में हेरफेर करने की अनुमति देता है।
मेमोरी मैप की गई फ़ाइल पढ़ें
नीचे दिए गए उदाहरण में हम एक बार में एक पूरी फाइल को मेमोरी में पढ़ते हैं और इसे एक फाइल ऑब्जेक्ट के रूप में मेमोरी में रखते हैं। फिर हम इसे रीड मोड में एक्सेस करते हैं। अंत में जैसा कि आप देख सकते हैं कि पूरी फाइल एक ऐसी वस्तु का प्रतिनिधित्व करती है जिससे हम आवश्यक पाठ प्राप्त करने के लिए कुछ पदों को काटते हैं।
उदाहरण
आयात करें ) mmap_obj के रूप में:प्रिंट(mmap_obj[4:26])read_mmap('E:\\test.txt')आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
'गैसीय उत्सर्जन'
mmap का उपयोग करके ढूंढें
उदाहरण
आयात mmapimport timedef Regular_io_find(fname):open(fname, mode="r", एन्कोडिंग="utf-8") के साथ fobj के रूप में:text =fobj.read() text.find("Death") def mmap_io_find (fname):open(fname, mode="r", एन्कोडिंग="utf-8") के साथ fobj के रूप में:mmap.mmap(fobj.fileno(), length=0, access=mmap.ACCESS_READ) के साथ mmap_obj के रूप में:mmap_obj.find(b"Death") start_time_r =time.time()regular_io_find('E:\\emissions.txt')end_time_r =time.time()print("Regular read start time:",start_time_r)print(" नियमित पढ़ने का प्रारंभ समय:",end_time_r)प्रिंट ('नियमित रूप से पढ़ने का समय:{0}'। प्रारूप (end_time_r - start_time_r)) start_time_m =time.time()mmap_io_find('E:\\emissions.txt')end_time_m =समय .time() प्रिंट ("एमएमएपी रीड स्टार्ट टाइम:", start_time_m) प्रिंट ("एमएमएपी रीड स्टार्ट टाइम:", एंड_टाइम_एम) प्रिंट ('एमएमएपी रीड टाइम:{0}'। फॉर्मेट (एंड_टाइम_एम - स्टार्ट_टाइम_एम))
आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
2013Regualr read start time:1609812463.2718163Regualr read end time:1609812463.2783241 खोजने के लिए नियमित रूप से पढ़ने का समय:0.00650787353515625mmap read start time:1609812463.2783241mmap read start time:1609812463.2783241mmap read time to find :0.0
फ़ाइल में लिखना
नीचे के उदाहरण में हम एक फाइल लेते हैं और इसे एमएमएपी मॉड्यूल के साथ एक्सेस कोड के साथ खोलते हैं जैसे आर + जो फाइल को पढ़ने और लिखने दोनों की अनुमति देता है। फ़ाइल ऑब्जेक्ट बनाने के बाद, हम स्लाइस करके एक स्थिति चुनते हैं जहाँ हम एक स्ट्रिंग लिख सकते हैं।
उदाहरण
आयात mmapdef mmap_io_write(fname):open(fname, mode="r+") के साथ fobj के रूप में:mmap.mmap(fobj.fileno(), length=0, access=mmap.ACCESS_WRITE) के साथ mmap_obj के रूप में:mmap_obj[ 20:26] =बी"नमस्कार!" mmap_obj.flush()mmap_io_write('E:\\emissions.txt')
उपरोक्त कोड को चलाने पर हम फाइल को खोल सकते हैं और स्ट्रिंग देख सकते हैं हैलो! फ़ाइल में 20 से 26 तक बाइट की स्थिति में लिखा जाता है।