모든 개체 (또는 최소한 데이터 프레임)를 작업 디렉터리 외부의 한 곳에 저장하는 방법을 찾아야합니다. 저는 파이썬이 모든 객체를 디스크가 아닌 메모리에 보관한다고 가정하므로 현재 세션에서 모든 객체를 내보내는 방법을 찾고 있습니다. 피클이 될 수 있으며 다른 Python 세션에서 읽을 수있을 때까지 중요하지 않습니다.
필요를 이해했다면 세션을 백업하고 싶습니다. 이 경우 pickle
. Kr.
첫 번째 해결책은 다음과 같습니다.
import pickle
def is_picklable(obj):
try:
pickle.dumps(obj)
except Exception:
return False
return True
bk = {}
for k in dir():
obj = globals()[k]
if is_picklable(obj):
try:
bk.update({k: obj})
except TypeError:
pass
# to save session
with open('./your_bk.pkl', 'wb') as f:
pickle.dump(bk, f)
# to load your session
with open('./your_bk.pkl', 'rb') as f:
bk_restore = pickle.load(f)
*** 두 번째 솔루션은 dill
. 작업 공간에 피클 할 수없는 개체가있는 경우 오류가 발생할 수 있습니다. *** :
import dill
dill.dump_session('./your_bk_dill.pkl')
#to restore session:
dill.load_session('./your_bk_dill.pkl')
세 번째 옵션은 shelve
패키지 와 함께 이동 합니다 .
import shelve
bk = shelve.open('./your_bk_shelve.pkl','n')
for k in dir():
try:
bk[k] = globals()[k]
except Exception:
pass
bk.close()
# to restore
bk_restore = shelve.open('./your_bk_shelve.pkl')
for k in bk_restore:
globals()[k]=bk_restore[k]
tmp[k] = bk_restore[k]
bk_restore.close()
평가판에 대해 확인하고 알려주십시오.
크레딧 : 두 번째 및 세 번째 솔루션은 아래 두 링크에서 거의 뻔뻔한 복사 / 붙여 넣기입니다. 원래 답변은 모듈 산세 오류로 이어 지므로 오류 처리를 조정했습니다.
딜 솔루션
선반 솔루션
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다