gpt4 book ai didi

python - 用户可以一次性pickle然后重新加载所有变量吗?自动保存功能的想法

转载 作者:行者123 更新时间:2023-12-02 21:41:16 25 4
gpt4 key购买 nike

我想将所有全局变量保存到 pickle 文件中,然后重新加载 pickle 文件并让它检索所有 pickle 值并将它们放回原始变量中。这将是我正在编写的数据库程序的自动保存功能的基础,因此,如果您想结束该日志记录 session ,脚本将自动保存整个环境变量,以便您稍后可以轻松地重新加载它并继续保存之前的一切。

我不知道该怎么做。下面的代码可以工作,但是如果您在完成后查看变量的第二次打印,全局变量(ab&c)仍然被清零,而不是从pickle中重新填充。

是否有可能一次性重新分配所有全局变量?我缺少什么?

import pickle

global a,b,c

a = 1
b = 2
c = 3

print (globals())

AutoPickleFile = open('z:\\Pickle.txt','wb')
pickle.dump(globals, AutoPickleFile)
AutoPickleFile.close()

a = 0
b = 0
c = 0

AutoPickleFile = open('z:\\Pickle.txt','rb')
globals = pickle.load(AutoPickleFile)
AutoPickleFile.close()

print (globals())

最佳答案

首先,这是一个坏主意。

globals() 不仅仅包含 abcpickle 模块也是模块中的全局模块。此外,globals() 映射还保存对 __builtins__ 对象的引用,所有 Python 内置函数都位于该对象中,包括 globals() > 功能本身。您不需要腌制任何这些。

坚持腌制你需要坚持的东西:

 with open('z:\\Pickle.txt', 'wb') as AutoPickleFile:
pickle.dump((a, b, c), AutoPickleFile)

并再次加载:

 with open('z:\\Pickle.txt', 'rb') as AutoPickleFile:
a, b, c = pickle.load(AutoPickleFile)

您尝试将内置函数 Globals 视为对字典的引用;您必须调用该函数才能访问酸洗的映射。

关于python - 用户可以一次性pickle然后重新加载所有变量吗?自动保存功能的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com