반복기가있는 파일에서 값을 읽을 수 있습니까? 그러면 파일이 반복의 끝에서 자동으로 닫힙니 까?파일에서 값을 읽는 이터레이터
with
문을 사용하여 이러한 반복기를 만드는 것은 효과가없는 것처럼 보입니다. 당신은 당신이 할 필요가 with
사용하려면
with open('/dev/zero', 'rb') as f:
values = iter(f.read(1) for i in (1, 2, 3))
values.next() #ValueError: I/O operation on closed file
래퍼 클래스를 만들고'__iter__'과'__next__'를 구현하고'StopIteration'을 발생시킬 때'f .__ exit __() '를 호출해야합니다. –
끝까지 반복하는 것을 잊어 버리거나 예외가 발생하면 파일 핸들이 누출 될 수 있기 때문에 시도하는 것이 바람직하지 않습니다. 파일의 모든 작업은'with' 내부에서 수행되어야합니다! – MSeifert