我有一个关于数据存储的问题.我有一个程序正在创建一个对象列表.将这些存储在文件中的最佳方法是什么,以便程序可以在以后重新加载它们?我曾尝试使用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)
我认为问题在于这条线
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)
| 归档时间: |
|
| 查看次数: |
2099 次 |
| 最近记录: |