如何将工作目录中的所有python对象保存到文件中



我需要找到将所有对象(或至少数据帧)保存到工作目录之外的一个地方的方法。我假设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')

最新更新