본문 바로가기

IT/python

yield 를 이용한 대량파일 처리

반응형

대용량 파일을 처리할 때는 한줄씩 읽으면서 처리해야 한다. 그렇다고 파일오픈 하고 1라인 읽고, 닫고

파일 오픈하고 2라인으로 서치 후 2라인 읽고 닫고 ... 는 아니다.

yield 를 이용해 큰파일을 1줄씩 읽어보자.

 

def read_file(yours_file):
    while True:
        data = yours_file.readline()
        if not data:
            break
        yield data
        
for line in read_file(open("massive.csv","r")):
	print(line)

추가 정보

https://dojang.io/mod/page/view.php?id=2412 

 

파이썬 코딩 도장: 40.1 제너레이터와 yield 알아보기

Unit 40. 제너레이터 사용하기 제너레이터는 이터레이터를 생성해주는 함수입니다. 이터레이터는 클래스에 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 하지만 제너레이터는 함수 안에서 yield

dojang.io

 

호출시마다 한줄씩 리턴하게 하기

def read_file(file_name):
	with open(file_name) as fread:
    	for line in frad:
        	yield line

 

반응형