1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Hộp Công Cụ Python

Connected

Bài tập

Viết một generator để nạp dữ liệu theo từng khối (2)

Ở bài trước, bạn đã xử lý tệp theo từng dòng với số lượng dòng xác định. Vậy nếu bạn muốn làm điều này cho toàn bộ tệp thì sao?

Trong trường hợp đó, generator sẽ rất hữu ích. Generator cho phép bạn đánh giá lười dữ liệu. Khái niệm đánh giá lười đặc biệt hữu ích khi xử lý các bộ dữ liệu rất lớn vì nó cho phép tạo giá trị một cách hiệu quả bằng cách yield từng phần dữ liệu theo lô, thay vì tải toàn bộ một lần.

Trong bài này, bạn sẽ định nghĩa một hàm generator read_large_file() tạo ra một đối tượng generator, mỗi lần gọi next() sẽ trả về một dòng từ tệp. Tệp csv 'world_dev_ind.csv' đã có sẵn trong thư mục hiện tại để bạn sử dụng.

Lưu ý: khi bạn mở kết nối tới một tệp, đối tượng tệp thu được vốn dĩ đã là một generator! Vì vậy, ngoài thực tế, bạn sẽ không cần tự tạo đối tượng generator một cách tường minh trong những trường hợp như thế này. Tuy nhiên, vì mục đích học tập, chúng ta sẽ luyện cách làm điều đó với hàm read_large_file(). Bắt đầu nhé!

Hướng dẫn

100 XP
  • Trong hàm read_large_file(), đọc một dòng từ file_object bằng phương thức readline(). Gán kết quả cho data.
  • Trong hàm read_large_file(), yield dòng vừa đọc từ tệp data.
  • Trong context manager, tạo một đối tượng generator gen_file bằng cách gọi hàm generator read_large_file() của bạn và truyền file vào đó.
  • In ba dòng đầu tiên do đối tượng generator gen_file tạo ra bằng cách dùng next().