我刚刚了解了泡菜库,所以我一直在努力学习如何使用它。但我遇到了一个问题。我要做的是保存(pickle)一个字典,该字典有一个包含2d列表(网格)的对象。但是当我更改座位的一个值时,pickle似乎没有保存。这是一些代码
#Save movie data
def saveData():
pickle.dump(movieInfo, open("save.p", "wb"))
#load movie data
def loadData():
movieInfo = pickle.load(open("save.p", "rb"))
class seats:
def __init__(self):
self.seating = []
for i in range(0,10):
self.seating.append(
[False,False,False,False,False,False,False,False,False,False]
)
loadData()
input("continue...")
chooseMovie()
任何帮助将不胜感激!谢谢。
答案 0 :(得分:1)
您将pickle文件加载到movieInfo
,这是一个函数本地的变量,一旦函数loadData()
退出,您将失去对它的引用。
如果它是全球性的,你应该声明它:
#load movie data
def loadData():
global movieInfo
movieInfo = pickle.load(open("save.p", "rb"))
但是,使用全局变量通常是一种不好的做法,相反,从函数返回加载的对象并在那里使用它会更好:
#load movie data
def loadData():
return pickle.load(open("save.p", "rb"))
# ...
moveInfo = loadData()
# ...
答案 1 :(得分:0)
完成后,您必须关闭文件。修改您的代码如下:
def saveData():
with open("save.p", "wb") as pickleFile:
pickle.dump(movieInfo, pickleFile)
def loadData():
with open("save.p", "rb") as pickleFile:
movieInfo = pickle.load(pickleFile)