参考文章:(数据科学学习手札142)dill:Python中增强版的pickle
主要思路:获取工作区变量名称,用dill.dump与dill.load结合循环完成数据的保存与加载。
话不多说,直接给上代码:
# 导入dill库和os库
import dill
import os
# 在当前目录下新建一个workspace_datafile文件夹
def new_folder(folder_name):
if not os.path.exists(folder_name):
os.mkdir(folder_name)
# 工作空间数据存储
def save_workplace_data(folder_name):
variable_names = list(globals().keys()) # 读取工作区的变量名称
items_to_remove = ['new_folder', 'main', 'load_workplace_data', 'save_workplace_data'] # 去除该文件产生的变量数据
for item in items_to_remove:
variable_names.remove(item)
dill.dump(variable_names, open(os.path.join(folder_name, "variable_names.pkl"), "wb")) # 保存变量名称,为加载数据作索引文件
# 构建一个循环,按顺序依次保存工作区的变量数据,每个变量数据保存为一个.pkl文件,文件名字以变量名来命名
for name in variable_names:
dill.dump(globals()[name], open(os.path.join(folder_name, name + ".pkl"), "wb"))
# 工作空间数据存加载
def load_workplace_data(folder_name):
with open(os.path.join(folder_name, "variable_names.pkl"), "rb") as f:
variable_names = dill.load(f)
for name in variable_names:
globals()[name] = dill.load(open(os.path.join(folder_name, name + ".pkl"), "rb"))
# 主函数 以保存数据为例
def main():
folder_name = "workspace_datafile1"
new_folder(folder_name)
save_workplace_data(folder_name)
# load_workplace_data(folder_name)
if __name__ == "__main__":
main()
数据保存
把上述代码放入一个新的.py文件,全选代码,右键选择执行python控制台中的选中内容;运行后会在当前目录下形成一个新的文件夹
其中有许多.pkl文件,每一个文件存储一个变量的数据。
数据加载
# 主函数 以数据加载为例
def main():
folder_name = "workspace_datafile1"
load_workplace_data(folder_name)
if __name__ == "__main__":
main()
即可。
遇到任何问题欢迎大家在评论区讨论~
若给你提供了帮助,请点赞+收藏!!!这对我真的很重要,谢谢啦。