내부적으로 닫히면 지워지는 fp
이라는 열린 파일 포인터가 있습니다. 당신도 자신을 위해 그것을 테스트 할 수 있습니다 :
if not self.zf.fp:
self.zf = zipfile.ZipFile(self.path)
zipfile
module source을 참조하십시오; open
메서드는 not self.fp
이 True 인 경우 RuntimeError
예외를 발생시킵니다.
문서화되지 않은 내부적 인 구현에 의존하는 것은 털이있을 수 있습니다. 미래의 구현이 코드를 변경하면 아마도 미묘한 방식으로 중단 될 것입니다. 프로젝트의 테스트 커버리지가 양호한 지 확인하십시오.
또는, ZipFile를 서브 클래스를 생성하고 내부 변화에 의한 파괴의 위험에 덜 될 상태, 추적 할 .close
메소드를 오버라이드 (override) 할 수 :
class MyZipFile(zipfile.ZipFile):
closed = False
def close(self):
self.closed = True
super(MyZipFile, self).close()
및
if self.zf.closed:
self.zf = MyZipFile(self.path)
을 제안에 대한 aknuds1 덕분에.
"이미"는 무엇을 의미합니까? 누구가 파일을 언제 닫을 수 있습니까? –