저는 파이썬 REPL 내부에서 작업 중이므로 주기적으로 작업을 저장하고 싶습니다. 누구나 내가 정의한 모든 변수를 덤프하는 스크립트가 있습니까? 나는 다음과 같은 것을 찾고있다.python 스크립트로 전체 환경 피킹
이것은 다른 사람들이 한 것처럼 보이므로 나는 바퀴를 다시 발명하기 전에 묻고 싶다.
저는 파이썬 REPL 내부에서 작업 중이므로 주기적으로 작업을 저장하고 싶습니다. 누구나 내가 정의한 모든 변수를 덤프하는 스크립트가 있습니까? 나는 다음과 같은 것을 찾고있다.python 스크립트로 전체 환경 피킹
이것은 다른 사람들이 한 것처럼 보이므로 나는 바퀴를 다시 발명하기 전에 묻고 싶다.
나는 당신이 Dill을 원한다고 생각 :
은 산세 파이썬 객체뿐만 아니라, 딜은 하나의 명령에 통역 세션의 상태를 저장 할 수있는 기능을 제공합니다. 따라서 인터프리터 세션을 저장하고 인터프리터를 닫고 다른 컴퓨터에 피클 된 파일을 보내고 새로운 인터프리터를 열고 세션을 실행 취소 한 다음 원래 인터프리터 세션의 '저장된' 상태에서 계속할 수 있습니다 .
아직 알파 상태이므로 중요한 데이터를 저장하는 데 의존하지 마십시오.
물론 열린 파일 핸들과 같은 일부 항목은 복원 할 수 없습니다. 그러나 당신은 아주 가깝게 될 수 있습니다.
최근 개선 사항 : dill은 열린 파일 핸들을 피클 할 수 있습니다 ([dill on github] (https://github.com/uqfoundation/dill) 참조). 그러나 파일 내용을 원하면 직렬화 할 수있는 StringIO에 내용을 전달하십시오. –
깔끔함! 파일에서 위치를 복원 할뿐만 아니라 파일을 다시 여는가? –
예. 그 동안 파일에 이상한 일이 없다고 가정 할 때 파일의 같은 위치에있게 파일 포인터를 복사합니다. 또한 닫힌 파일 핸들, stdin/stdout/stderr 및 임시 파일을 다루고 있으며, 실패하면 devnull에 파일 핸들을 빌드하려고 시도하고 UnpicklingError가 발생하지 않습니다. 이것이 최선의 실패 행동인지 확실하지 않지만 지금은 그게 무엇입니까. –
그런 일반적인 방식으로는 가능하지 않다고 생각합니다. 파이썬의 모든 것을 절인 할 수있는 것은 아니므로, 피클 할 대상을 결정하는 코드를 직접 작성해야하며, 절대로 피클 할 수없는 예기치 않은 값을 처리하는 방법은 없습니다. – Achim