शुरू करेंमुफ़्त में शुरू करें

चंक्स में डेटा लोड करने के लिए जेनरेटर लिखना (2)

पिछले अभ्यास में, आपने दी गई संख्या की लाइनों के लिए फाइल को लाइन-बाय-लाइन प्रोसेस किया था. लेकिन अगर आप पूरी फाइल के लिए ऐसा करना चाहें तो?

ऐसी स्थिति में generators उपयोगी रहते हैं. Generators आपको डेटा को लाज़ी इवैल्युएट करने देते हैं. यह lazy evaluation का कॉन्सेप्ट बहुत बड़े डेटासेट्स के साथ काम करते समय मददगार होता है, क्योंकि यह पूरे डेटा को एक साथ लोड करने के बजाय, एक समय में केवल डेटा के छोटे-छोटे हिस्से yield करके वैल्यूज कुशलतापूर्वक जनरेट करने देता है.

इस अभ्यास में, आप एक जेनरेटर फंक्शन read_large_file() परिभाषित करेंगे जो एक जेनरेटर ऑब्जेक्ट बनाता है. यह ऑब्जेक्ट हर बार next() कॉल होने पर फाइल से एक लाइन yield करता है. आपके उपयोग के लिए csv फाइल 'world_dev_ind.csv' आपकी करंट डायरेक्टरी में मौजूद है.

ध्यान दें कि जब आप किसी फाइल से कनेक्शन ओपन करते हैं, तो बना हुआ फाइल ऑब्जेक्ट पहले से ही एक जेनरेटर होता है! इसलिए, वास्तविक प्रोजेक्ट्स में, ऐसी स्थितियों में आपको अलग से जेनरेटर ऑब्जेक्ट बनाने की ज़रूरत नहीं पड़ेगी. लेकिन शैक्षणिक उद्देश्य से, हम यहाँ आपसे read_large_file() फंक्शन के साथ यही अभ्यास करवा रहे हैं. शुरू कीजिए!

यह अभ्यास पाठ्यक्रम का हिस्सा है

Python टूलबॉक्स

पाठ्यक्रम देखें

अभ्यास निर्देश

  • फंक्शन read_large_file() में, file_object से readline() मेथड का उपयोग करके एक लाइन पढ़ें. परिणाम को data में असाइन करें.
  • फंक्शन read_large_file() में, फाइल से पढ़ी गई लाइन data को yield करें.
  • कॉन्टेक्स्ट मैनेजर के भीतर, अपने जेनरेटर फंक्शन read_large_file() को कॉल करके और उसे file पास करके जेनरेटर ऑब्जेक्ट gen_file बनाएँ.
  • जेनरेटर ऑब्जेक्ट gen_file द्वारा उत्पन्न पहली तीन लाइनें next() का उपयोग करके प्रिंट करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# Define read_large_file()
def read_large_file(file_object):
    """A generator function to read a large file lazily."""

    # Loop indefinitely until the end of the file
    while True:

        # Read a line from the file: data
        data = ____

        # Break if this is the end of the file
        if not data:
            break

        # Yield the line of data
        
        
# Open a connection to the file
with open('world_dev_ind.csv') as file:

    # Create a generator object for the file: gen_file
    gen_file = ____

    # Print the first three lines of the file
    print(____)
    print(____)
    print(____)
कोड संपादित करें और चलाएँ