我想将所有全局变量保存到pickle文件中,然后重新加载pickle文件并让它检索所有pickle值并将它们放回原始变量中。这将是我正在编写的一个数据库程序的自动保存功能的基础,因此,如果您想结束该日志记录会话,脚本将自动保存整个环境变量,以便您以后可以轻松地重新加载它,并继续保持保存前的状态。在
我不知道怎么做。下面的代码可以工作,但是如果您查看变量的第二次打印,那么全局变量(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())
最好使用JSON或其他数据格式序列化的“名称空间”。那么装载和卸载就会干净得多。。。在
例如。。在
Pickle是不可靠的,而且非常特定于python,从长远来看,以更好的格式进行操作要好得多。在
首先,这是个坏主意。在
globals()
包含的不仅仅是a
、b
和{pickle
模块也是模块中的一个全局变量。此外,globals()
映射还包含对__builtins__
对象的引用,所有的Python内置程序都在其中,包括globals()
函数本身。你不需要腌这些东西。在坚持腌制就是你需要坚持的:
并再次加载:
^{pr2}$您试图将内置函数
globals
作为字典的引用;您必须调用该函数来访问pickle的映射。在相关问题 更多 >
编程相关推荐