我有一个应用程序需要在列表增长时保存它。这是朝着做人工智能学习的方向迈出的一步。无论如何,这是我的代码:
vocab = ["cheese", "spam", "eggs"]
word = raw_input()
vocab.append(word)
然而,当代码运行时,finishedvocab
将恢复为cheese、spam和egg。
即使关闭 Windows CMD 并返回代码编辑阶段,我如何才能使添加到列表中的任何内容永久保留在那里。这够清楚了吗??谢谢
我有一个应用程序需要在列表增长时保存它。这是朝着做人工智能学习的方向迈出的一步。无论如何,这是我的代码:
vocab = ["cheese", "spam", "eggs"]
word = raw_input()
vocab.append(word)
然而,当代码运行时,finishedvocab
将恢复为cheese、spam和egg。
即使关闭 Windows CMD 并返回代码编辑阶段,我如何才能使添加到列表中的任何内容永久保留在那里。这够清楚了吗??谢谢
您正在研究更普遍的对象持久性问题。有无数种方法可以做到这一点。如果您刚刚开始,在 Python 中保存/恢复数据结构的最简单方法是使用 pickle 模块。随着您变得更先进,有不同的方法,它们都有自己的取舍……您将在需要时学习。
看看泡菜
有了它,你可以序列化一个 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']
您可以使用json和文件,如下所示:
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 和数据库。
PS。保持简单:除非您需要结构,否则您不需要弄乱 json、pickle 或任何其他结构化格式。