BaşlayınÜcretsiz Başlayın

Veriyi parçalara yüklemek için bir üreteç yazma (2)

Önceki egzersizde, belirli sayıda satır için bir dosyayı satır satır işlemiştin. Peki, bunu tüm dosya için yapmak istersen ne olur?

Bu durumda üreteçler (generators) kullanmak faydalı olur. Üreteçler, veriyi tembel değerlendirme ile işlemeni sağlar. Tembel değerlendirme kavramı, çok büyük veri kümeleriyle uğraşırken kullanışlıdır çünkü verileri tek seferde tamamını almak yerine her seferinde yalnızca birer parça yield ederek verimli bir şekilde üretmeni sağlar.

Bu egzersizde, her next() çağrıldığında bir dosyadan tek bir satır döndüren bir üreteç nesnesi üreten read_large_file() adlı bir üreteç fonksiyonu tanımlayacaksın. 'world_dev_ind.csv' adlı csv dosyası kullanımın için mevcut çalışma dizininde.

Bir dosyaya bağlantı açtığında, ortaya çıkan dosya nesnesinin zaten bir üreteç olduğunu unutma! Yani gerçek dünyada, bu gibi durumlarda açıkça üreteç nesneleri oluşturman gerekmeyecek. Ancak pedagojik nedenlerle, burada read_large_file() fonksiyonuyla bunu nasıl yapacağını pratik etmeni istiyoruz. Hadi başla!

Bu egzersiz

Python Araç Kutusu

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • read_large_file() fonksiyonunda, readline() metodunu kullanarak file_objectten bir satır oku. Sonucu data değişkenine ata.
  • read_large_file() fonksiyonunda, dosyadan okunan satırı data olarak yield et.
  • Bağlam yöneticisi içinde, üreteç fonksiyonun read_large_file()'ı çağırıp ona file geçirerek gen_file adlı bir üreteç nesnesi oluştur.
  • next() kullanarak üreteç nesnesi gen_fileın ürettiği ilk üç satırı yazdır.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

# 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(____)
Kodu Düzenle ve Çalıştır