保存空列表时 python 搁置时出错
Error on python shelve when saving an empty list
我想用 python 搁置保存我所有的变量(包括基元、对象、列表、字典等)。在我的工作区中,我有一些空列表,它们将在特定条件下或在我的代码的后续步骤中使用和填充。不幸的是,当我想用 python shelve
保存我的工作区时,它会在空列表键上引发错误。我的代码如下:
for key in dir():
try:
my_ws[key] = globals()[key]
except TypeError:
print('ERROR shelving: {0}'.format(key))
你有什么想法吗?
酸洗空列表没有问题。但是当试图在 globals() 中查找局部变量 (dir) 时,您肯定会遇到关键错误。除了在全局范围内调用时,dir() 将 return 各种你不想保存的名称,如模块、函数、__file__
、__doc__
等
如果您粘贴的代码位于某个函数中,那么试试这个:
def f():
a = []
b = []
for k, v in locals().items():
my_ws[k] = v
搁置没有空列表的问题。
请确保:1) 在使用之前正确初始化搁置对象。 2) 排除搁置不能序列化的所有元素。它使用 pickle 模块,所有支持的元素都可以在这里找到:
https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled
检查以下代码是否适合您,以及您是否遇到任何错误。
import inspect
import shelve
my_ws = shelve.open('test')
for key in dir():
if not inspect.ismodule(globals()[key]):
try:
my_ws[key] = globals()[key]
except TypeError:
print('ERROR shelving: {0}'.format(key))
我想用 python 搁置保存我所有的变量(包括基元、对象、列表、字典等)。在我的工作区中,我有一些空列表,它们将在特定条件下或在我的代码的后续步骤中使用和填充。不幸的是,当我想用 python shelve
保存我的工作区时,它会在空列表键上引发错误。我的代码如下:
for key in dir():
try:
my_ws[key] = globals()[key]
except TypeError:
print('ERROR shelving: {0}'.format(key))
你有什么想法吗?
酸洗空列表没有问题。但是当试图在 globals() 中查找局部变量 (dir) 时,您肯定会遇到关键错误。除了在全局范围内调用时,dir() 将 return 各种你不想保存的名称,如模块、函数、__file__
、__doc__
等
如果您粘贴的代码位于某个函数中,那么试试这个:
def f():
a = []
b = []
for k, v in locals().items():
my_ws[k] = v
搁置没有空列表的问题。
请确保:1) 在使用之前正确初始化搁置对象。 2) 排除搁置不能序列化的所有元素。它使用 pickle 模块,所有支持的元素都可以在这里找到:
https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled
检查以下代码是否适合您,以及您是否遇到任何错误。
import inspect
import shelve
my_ws = shelve.open('test')
for key in dir():
if not inspect.ismodule(globals()[key]):
try:
my_ws[key] = globals()[key]
except TypeError:
print('ERROR shelving: {0}'.format(key))