新的Python(编程)和数据存储

CGP*_*rey 2 python python-3.x

我有一个关于数据存储的问题.我有一个程序正在创建一个对象列表.将这些存储在文件中的最佳方法是什么,以便程序可以在以后重新加载它们?我曾尝试使用Pickle,但我想我可能正在走错路,当我尝试回读数据时,我不断收到此错误:

    Traceback (most recent call last):
     File "test.py", line 110, in <module>
knowledge = pickle.load(open("data.txt"))
    File "/sw/lib/python3.1/pickle.py", line 1356, in load
 encoding=encoding, errors=errors).load()
File "/sw/lib/python3.1/codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
  UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)

编辑添加:这里是我正在尝试的一些代码:

FILE = open("data.txt", "rb")

knowledge = pickle.load(open("data.txt"))

FILE = open("data.txt", 'wb')

pickle.dump(knowledge, FILE)
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 9

我认为问题在于这条线

knowledge = pickle.load(open("data.txt"))
Run Code Online (Sandbox Code Playgroud)

不以二进制模式打开文件.Python 3.2:

>>> import pickle
>>> 
>>> knowledge = {1:2, "fred": 19.3}
>>> 
>>> with open("data.txt", 'wb') as FILE:
...     pickle.dump(knowledge, FILE)
... 
>>> knowledge2 = pickle.load(open("data.txt"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/codecs.py", line 300, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte
>>> knowledge2 = pickle.load(open("data.txt","rb"))
>>> knowledge2
{1: 2, 'fred': 19.3}
Run Code Online (Sandbox Code Playgroud)