] इस कार्य से निपटने के लिए एक कुशल समाधान है:
रिवर्स लाइन रीडर जनरेटर
निम्न कोड एक जनरेटर फ़ंक्शन को परिभाषित करता है, reverse_readline, जो एक फ़ाइल की रेखाओं को रिवर्स ऑर्डर में देता है। यह प्रदर्शन को अनुकूलित करने और बड़ी फ़ाइलों को प्रभावी ढंग से संभालने के लिए एक बफर-आधारित दृष्टिकोण का उपयोग करता है:
आयात ओएस REFH_READLINE (फ़ाइल नाम, BUF_SIZE = 8192) को परिभाषित करें: "" "एक जनरेटर जो रिवर्स ऑर्डर में एक फ़ाइल की लाइनें लौटाता है" "" " FH के रूप में खुले (फ़ाइल नाम, 'rb') के साथ: खंड = कोई नहीं ऑफसेट = 0 fh.seek (0, os.seek_end) file_size = billing_size = fh.tell () शेष _size> 0: ऑफसेट = मिनट (file_size, ऑफसेट buf_size) fh.seek (file_size - ऑफसेट) बफर = fh.read (min (शेष_सिज़, buf_size))) # फ़ाइल के अंतिम "\ n" को हटा दें यदि यह मौजूद है, केवल पहले बफर के लिए यदि शेष _size == file_size और बफर [-1] == ord ('\ n'): बफर = बफर [:-1] शेष _size -= buf_size लाइनें = बफर.स्लिट ('\ n'.encode ()) # इस चंक की अंतिम पंक्ति में अंतिम चंक के खंड को जोड़ें यदि खंड कोई नहीं है: लाइनें [-1] = खंड खंड = लाइनें [0] लाइनें = लाइनें [1:] # खंड को छोड़कर इस चंक में उपज लाइनें उल्टे (रेखाओं) में लाइन के लिए: # UTF-8 डिकोड त्रुटि से बचने के लिए, केवल एक पार्सड लाइन पर डिकोड करें उपज लाइन। डिसोड () # अगर फ़ाइल खाली थी तो कोई भी उपज न करें यदि खंड कोई नहीं है: उपज खंड .decode ()
प्रिंट (लाइन)यह फ़ाइल की लाइनों को रिवर्स ऑर्डर में प्रिंट करेगा।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3