且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在python pickle文件中保存和加载多个对象

更新时间:2023-10-19 20:50:16

tuple或dict是最常用的方法:

Using a list, tuple, or dict is by far the most common way to do this:

import pickle
PIK = "pickle.dat"

data = ["A", "b", "C", "d"]
with open(PIK, "wb") as f:
    pickle.dump(data, f)
with open(PIK, "rb") as f:
    print pickle.load(f)

打印:

['A', 'b', 'C', 'd']

但是,pickle文件任何数量的泡菜。这里的代码产生相同的输出。但请注意,很难写和理解:

However, a pickle file can contain any number of pickles. Here's code producing the same output. But note that it's harder to write and to understand:

with open(PIK, "wb") as f:
    pickle.dump(len(data), f)
    for value in data:
        pickle.dump(value, f)
data2 = []
with open(PIK, "rb") as f:
    for _ in range(pickle.load(f)):
        data2.append(pickle.load(f))
print data2

如果你这样做,你有责任知道你写出的文件中有多少个腌菜。上面的代码通过首先选择列表对象的数量来实现。

If you do this, you're responsible for knowing how many pickles are in the file you write out. The code above does that by pickling the number of list objects first.