我需要找到将所有对象(或至少数据帧)保存到工作目录之外的一个地方的方法。我假设Python将所有对象保存在内存中而不是磁盘上,所以我正在寻找从当前会话导出所有对象的方法。它可以是pickle,除非你可以将它读到另一个Python会话
如果我理解您的需求,您希望备份您的会话。如果是这样的话,这里有一个使用pickle
的解决方案。基米-雷克南.
第一个解是 :
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
。如果在您的工作空间中有一些不可pickle的对象,您可能会出现错误***:
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()
核对一下,让我们知道你的试用情况。
credit:第二个和第三个解决方案几乎是无耻的复制/粘贴从下面两个链接。我调整了错误的处理,因为原来的答案会导致模块的酸洗错误。
滴液
滴液
如果您想将数据帧保存到另一个目录,请尝试:
df.to_csv('foldername/filename.csv')