나는 임시 디렉토리로 작업하고있어 프로그램이 성공적으로 종료되었는지에 관계없이 프로그램이 닫힐 때 삭제되는지 확인하고자합니다. 나는 확실하지 않다 무엇 여기임시 디렉토리를 프로그램 종료시 삭제되도록 어떻게 관리합니까?
import shutil
import tempfile
class TempDir(str):
""" container for temporary directory.
Deletes directory when garbage collected/zero references """
def __del__(self):
shutil.rmtree(self.__str__(), onerror=my_error_fn)
dbdir = TempDir(tempfile.mkdtemp())
: 프로그램이 종료하는 경우 또는 내가 디렉토리를 작성 tempfile.mkdtemp
를 사용하고 __del__
명령에 디렉토리를 삭제 str
의 서브 클래스로 만들어지는 문자열을 걸었습니다 KeyboardInterrupt가 발생하면 파이썬은 자동으로 모든 변수를 삭제/가비지 수집합니까? 그렇지 않다면 디렉토리가 삭제되는지 어떻게 확인할 수 있습니까?
관련 정보 creating destructor methods in Python. 오랫동안 TempDir 객체가 다른 것을 참조하지 않는 한, __del__
을 사용하여 정상적으로 파괴되어야합니다.
테스트했을 때 무엇을 발견 했습니까? Ctrl + C를 누를 때마다'__del__'이 실행됩니까? –
좋아, 그냥 내 테스트의 결과를 추가 - 제안에 대단히 감사합니다 @ JoelCornett! –
'__del__' 외에도'atexit' 모듈 사용을 고려하십시오. – martineau