繁体   English   中英

Python的泡菜不保存数据?

[英]Python pickle not saving data?

我只是了解了泡菜库,所以我一直在尝试学习如何使用它。 但是我遇到了一个问题。 我正在尝试做的是保存(戳)字典,该字典具有一个包含2d列表(网格)的对象。 但是当我更改座位的值之一时,泡菜似乎并没有节省。 这是一些代码

#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()

任何帮助将非常感激! 谢谢。

您可以将腌制的文件加载到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()
# ...

完成后,您必须关闭文件。 修改您的代码,如下所示:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM