1. 学ぶ
  2. /
  3. コース
  4. /
  5. Python 도구 상자

Connected

演習

청크 단위로 데이터를 불러오는 제너레이터 작성하기 (2)

이전 연습 문제에서는 지정한 줄 수만큼 파일을 한 줄씩 처리했어요. 하지만 전체 파일에 대해 이렇게 처리하고 싶다면 어떻게 해야 할까요?

이럴 때는 제너레이터가 유용합니다. 제너레이터를 사용하면 데이터를 지연 평가(lazy evaluation)할 수 있어요. 지연 평가는 매우 큰 데이터셋을 다룰 때 특히 유용합니다. 전체를 한 번에 가져오지 않고, 매번 필요한 데이터 조각만 yield하여 효율적으로 값을 생성할 수 있기 때문입니다.

이번 연습에서는 제너레이터 함수 read_large_file()을 정의해 보겠습니다. 이 함수는 제너레이터 객체를 만들어 주며, 여기에 next()를 호출할 때마다 파일에서 한 줄씩 반환합니다. 현재 작업 디렉터리에는 'world_dev_ind.csv' 파일이 준비되어 있습니다.

참고로, 파일 연결을 열면 만들어지는 파일 객체 자체가 이미 제너레이터입니다! 따라서 실제 현업에서는 이런 경우에 굳이 제너레이터 객체를 직접 만들 필요가 없어요. 다만 학습을 위해 여기서는 read_large_file() 함수로 이를 직접 연습해 보겠습니다. 자, 시작해 볼까요!

指示

100 XP
  • 함수 read_large_file()에서 readline() 메서드를 사용해 file_object에서 한 줄을 읽고, 결과를 data에 할당하세요.
  • 함수 read_large_file()에서 파일에서 읽은 줄인 data를 yield하세요.
  • 컨텍스트 매니저 안에서, 제너레이터 함수 read_large_file()을 호출해 제너레이터 객체 gen_file을 만들고 file을 인수로 전달하세요.
  • next()를 사용하여 제너레이터 객체 gen_file이 생성한 처음 세 줄을 출력하세요.