2011-11-22 3 views
4

저는 파이썬 REPL 내부에서 작업 중이므로 주기적으로 작업을 저장하고 싶습니다. 누구나 내가 정의한 모든 변수를 덤프하는 스크립트가 있습니까? 나는 다음과 같은 것을 찾고있다.python 스크립트로 전체 환경 피킹

이것은 다른 사람들이 한 것처럼 보이므로 나는 바퀴를 다시 발명하기 전에 묻고 싶다.

+0

그런 일반적인 방식으로는 가능하지 않다고 생각합니다. 파이썬의 모든 것을 절인 할 수있는 것은 아니므로, 피클 할 대상을 결정하는 코드를 직접 작성해야하며, 절대로 피클 할 수없는 예기치 않은 값을 처리하는 방법은 없습니다. – Achim

답변

2

나는 당신이 Dill을 원한다고 생각 :

은 산세 파이썬 객체뿐만 아니라, 딜은 하나의 명령에 통역 세션의 상태를 저장 할 수있는 기능을 제공합니다. 따라서 인터프리터 세션을 저장하고 인터프리터를 닫고 다른 컴퓨터에 피클 된 파일을 보내고 새로운 인터프리터를 열고 세션을 실행 취소 한 다음 원래 인터프리터 세션의 '저장된' 상태에서 계속할 수 있습니다 .

아직 알파 상태이므로 중요한 데이터를 저장하는 데 의존하지 마십시오.

물론 열린 파일 핸들과 같은 일부 항목은 복원 할 수 없습니다. 그러나 당신은 아주 가깝게 될 수 있습니다.

+0

최근 개선 사항 : dill은 열린 파일 핸들을 피클 할 수 있습니다 ([dill on github] (https://github.com/uqfoundation/dill) 참조). 그러나 파일 내용을 원하면 직렬화 할 수있는 StringIO에 내용을 전달하십시오. –

+0

깔끔함! 파일에서 위치를 복원 할뿐만 아니라 파일을 다시 여는가? –

+1

예. 그 동안 파일에 이상한 일이 없다고 가정 할 때 파일의 같은 위치에있게 파일 포인터를 복사합니다. 또한 닫힌 파일 핸들, stdin/stdout/stderr 및 임시 파일을 다루고 있으며, 실패하면 devnull에 파일 핸들을 빌드하려고 시도하고 UnpicklingError가 발생하지 않습니다. 이것이 최선의 실패 행동인지 확실하지 않지만 지금은 그게 무엇입니까. –