cPickle.dump总是在文件末尾转储

时间:2014-09-04 10:02:21

标签: python pickle

cPickle.dump(object,file)始终转储到文件末尾。有没有办法在文件中的特定位置转储?我希望以下代码段能够正常工作

file = open("test","ab")
file.seek(50,0)
cPickle.dump(object, file)
file.close()

但是,上面的代码片段会将对象转储到文件的末尾(假设文件已经包含1000个字符),无论我在哪里寻找文件指针。

1 个答案:

答案 0 :(得分:2)

我认为打开文件的方式可能比cPickle更具问题。 ab模式,除了作为附加模式(由于您seek之后应该没有相关性),还为低级O_TRUNC系统调用提供open标志。如果您不想截断,则应尝试r+模式。

如果这不能解决您的问题并且您的对象不是很大,您仍然可以使用dumps

file = open("test","ab")
file.seek(50,0)
dumped= cPickle.dumps(object)
file.write(dumped)
file.close()