Skip to main content
 首页 » 编程设计

python之使用 cPickle 的问题

2025年05月04日12pengyingh

你能帮我实现这个例子吗?

如果序列化字典存在,我想加载它,修改它并再次转储它。我认为我用于打开文件的模式有问题,但我不知道正确的方法。

import os 
import cPickle as pickle 
 
if os.path.isfile('file.txt'): 
    cache_file = open('file.txt', 'rwb') 
    cache = pickle.load(cache_file) 
else: 
    cache_file = open('file.txt', 'wb') 
    cache = dict.fromkeys([1,2,3]) 
 
# modifications of cache 
 
pickle.dump(cache, cache_file) 
cache_file.close()     

运行两次可以看到错误:

Traceback (most recent call last): 
  File "example.py", line 11, in <module> 
    pickle.dump(cache, cache_file) 
IOError: [Errno 9] Bad file descriptor 

请您参考如下方法:

'rwb' 不是 open() 的正确文件打开模式。试试 'r+b'。

从文件中读取后,光标位于文件末尾,因此 pickle.dump(cache, cache_file) 将附加到文件(这可能不是您想要的).在 pickle.load(cache_file) 之后尝试 cache_file.seek(0)。