1. Uczyć się
  2. /
  3. Courses
  4. /
  5. Zestaw narzędzi Pythona

Connected

Exercise

Tworzenie generatora do wczytywania danych we fragmentach (2)

W poprzednim ćwiczeniu przetwarzałeś(-aś) plik linia po linii przez określoną liczbę linii. Co jednak zrobić, gdy chcesz przetworzyć cały plik?

W takim przypadku przydają się generatory. Generatory umożliwiają leniwe przetwarzanie danych. Koncepcja leniwego przetwarzania jest szczególnie użyteczna przy bardzo dużych zbiorach danych – pozwala generować wartości efektywnie, zwracając (yielding) tylko fragmenty danych naraz, zamiast wczytywać wszystko od razu.

W tym ćwiczeniu zdefiniujesz funkcję generatora read_large_file(), która tworzy obiekt generatora zwracający pojedynczą linię z pliku przy każdym wywołaniu next(). Plik CSV 'world_dev_ind.csv' znajduje się w twoim bieżącym katalogu.

Zwróć uwagę, że po otwarciu połączenia z plikiem, wynikowy obiekt plikowy jest już generatorem! W praktyce nie trzeba więc jawnie tworzyć obiektów generatora w takich sytuacjach. Jednak w celach edukacyjnych ćwiczymy tutaj, jak to zrobić, korzystając z funkcji read_large_file(). Do dzieła!

Instrukcje

100 XP
  • W funkcji read_large_file() wczytaj linię z file_object za pomocą metody readline(). Przypisz wynik do data.
  • W funkcji read_large_file() zwróć wczytaną linię data za pomocą yield.
  • W menedżerze kontekstu utwórz obiekt generatora gen_file, wywołując swoją funkcję generatora read_large_file() i przekazując do niej file.
  • Wydrukuj pierwsze trzy linie zwrócone przez obiekt generatora gen_file, używając next().