선반에서 파이썬 템플 파일을 사용하는 쉬운 방법이 있습니까 (그리고 그것을 청소하는지 확인하십시오)?

StackOverflow https://stackoverflow.com/questions/1298037

  •  18-09-2019
  •  | 
  •  

문제

기본적으로, 나는 내가 쓰고있는 파이썬 프로그램에서 무한한 크기 (메모리 바운드보다는 더 정확하게, 하드 드라이브) dic을 원합니다. Tempfile 및 Shelve 모듈이 자연스럽게 적합한 것처럼 보이지만 안전한 방식으로 함께 사용하는 방법을 알 수 없습니다. 선반이 GCED가 될 때 템 파일을 삭제하기를 원하지만 (또는 선반이 사용되지 않은 후에는 삭제가 필요하지 않은 경우), 이에 대해 제가 생각해 낼 수있는 유일한 솔루션은 tempfile.temporaryFile ()을 사용하여 열어줍니다. 파일 핸들, 핸들에서 파일 이름을 가져오고,이 파일 이름을 사용하여 선반을 열고, 파일 핸들에 대한 참조를 유지하여 GCED (및 파일이 삭제 된 파일)를 방지 한 다음이 저장하는 선반에 래퍼를 넣는 것을 방지합니다. 참조. 이 복잡한 혼란보다 더 나은 해결책이 있습니까?

제한 : 표준 파이썬 라이브러리 만 사용할 수 있으며 완전히 교차 플랫폼이어야합니다.

도움이 되었습니까?

해결책

오히려 Shelve.shelf에서 상속하고 닫기 메소드 (*)를 무시하여 파일을 in 다. 사용중인 특정 DBM 모듈에 따라 선반이 포함 된 파일 이상이있을 수 있습니다. 하나의 솔루션은 임시 파일이 아닌 임시 디렉토리를 만들고 완료되면 디렉토리의 모든 것을 제거하는 것입니다. 다른 솔루션은 특정 DBM 모듈 (예 : BSDDB 또는 DUMBDBM)에 바인딩하고 이러한 라이브러리가 만든 파일을 구체적으로 제거하는 것입니다.

(*) 선반의 밀접한 방법은 선반을 수집 할 때도 호출됩니다. 쓰레기 파일로 끝날 수있는 방법은 통역사가 충돌하거나 죽일 때입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top