2

我有一个应用程序需要在列表增长时保存它。这是朝着做人工智能学习的方向迈出的一步。无论如何,这是我的代码:

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

word = raw_input()

vocab.append(word)

然而,当代码运行时,finishedvocab将恢复为cheese、spamegg
即使关闭 Windows CMD 并返回代码编辑阶段,我如何才能使添加到列表中的任何内容永久保留在那里。这够清楚了吗??谢谢

4

4 回答 4

5

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

于 2012-05-10T21:08:23.670 回答
4

看看泡菜

有了它,你可以序列化一个 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']
于 2012-05-10T21:07:55.143 回答
4

您可以使用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)

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

于 2012-05-10T21:13:31.283 回答
1

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

你可以愉快地编程多年而不需要 pickle,但你不能没有文件 i/o 和数据库。

PS。保持简单:除非您需要结构,否则您不需要弄乱 json、pickle 或任何其他结构化格式。

于 2012-05-10T21:14:07.410 回答