Python:为AI学习应用程序保存并恢复列表

Python:为AI学习应用程序保存并恢复列表,python,artificial-intelligence,Python,Artificial Intelligence,我有一个应用程序,它需要在列表增长时保存列表。这是迈向AI学习的一步。无论如何,这是我的代码: vocab = ["cheese", "spam", "eggs"] word = raw_input() vocab.append(word) 但是,当代码运行时,完成的vocab将恢复为奶酪、垃圾邮件和鸡蛋。即使关闭windows CMD并返回到代码编辑阶段,如何使添加到列表中的内容永久保留在那里。这够清楚吗?? 谢谢调查 使用它,您可以序列化Python数据结构,然后像这样重新加载它: &

我有一个应用程序,它需要在列表增长时保存列表。这是迈向AI学习的一步。无论如何,这是我的代码:

vocab = ["cheese", "spam", "eggs"]

word = raw_input()

vocab.append(word)
但是,当代码运行时,完成的
vocab
将恢复为奶酪、垃圾邮件和鸡蛋。
即使关闭windows CMD并返回到代码编辑阶段,如何使添加到列表中的内容永久保留在那里。这够清楚吗?? 谢谢

调查

使用它,您可以序列化Python数据结构,然后像这样重新加载它:

>>> import pickle
>>> vocab =["cheese", "spam", "eggs"]
>>> outf=open('vocab.pkl','wb')
>>> pickle.dump(vocab,outf)
>>> outf.close()
>>> quit()
Python解释器现在退出,重新启动Python并重新加载数据结构:

abd-pb:~ andrew$ python
Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>> pklf=open('vocab.pkl','rb')
>>> l=pickle.load(pklf)
>>> l
['cheese', 'spam', 'eggs']

您正在研究对象持久性这一更普遍的问题。有无数种方法可以做到这一点。如果您刚刚开始,在Python中保存/恢复数据结构的最简单方法是使用pickle模块。随着您越来越高级,有不同的方法,它们都有各自的优缺点…您将在需要时学习这些方法。

您可以使用和文件,如下所示:

import json

#write the data to a file
outfile = open("dumpFile", 'w')
json.dump(vocab, outfile)

#read the data back in
with open("dumpFile") as infile:
    newVocab = json.load(infile)

这具有纯文本文件的优点,因此您可以轻松查看存储在其中的数据。

您可以使用pickle,但作为一种技术,它仅限于python程序。处理持久数据的常规方法是将其写入文件。只需从常规文本文件中读取单词列表(每行一个单词),稍后再写出更新后的单词列表。稍后,您可以学习如何将此类信息保存在数据库中(比文件功能更强大,但灵活性更低)

您可以在不需要pickle的情况下愉快地编程数年,但您不能没有文件i/o和数据库


注意:简单一点:除非你需要结构化,否则你不需要乱用json、pickle或任何其他结构化格式。

(LOL)--你比我快了几秒:)好的对象持久性我不知道它叫什么我现在可以用谷歌搜索了!!是的,JSON(不像pickle)可以跨平台和语言移植。我的观点是这些解决方案的相对复杂性。对于初学者来说,第一步应该是直接文件i/o。我不觉得pickle那么复杂。它不是跨平台或跨语言的,但并不复杂。