我有一个二进制文件,我想读取其内容, 这是代码
with open ('file1', 'rb') as fp:
itemlist = pickle.load(fp)
print(itemlist)
而我用于写入文件的代码是
with open('file1', 'ab') as fp:
pickle.dump(training, fp)
文件包含许多长度为4的列表。 问题是print(itemlist)仅打印最后一个列表 而我希望所有这些对象都可以转换为二维numpy数组。我什至可以看到每次追加调用时文件大小都会逐渐增加。
我该怎么办?
答案 0 :(得分:0)
如果您有很多长度为4的列表,则应将其转储并加载为长度为4的列表。否则,您将不得不反复调用pickle.load
直到文件耗尽。
答案 1 :(得分:0)
首先创建2d列表,然后保存。这样,您无需多次读写文件。
例如:
import pickle
training = []
list1 = [2,4,5,6,7,7,2,6]
list2 = [5,6,53,6,75,3,53,65]
list3 = [46,89,24,64,243,25,6]
list4 = [78,875,24,24,64,363,25]
training.append(list1)
training.append(list2)
training.append(list3)
training.append(list4)
with open('file1', 'ab') as fp:
pickle.dump(training, fp)
with open ('file1', 'rb') as fp:
itemlist = pickle.load(fp)
print(itemlist)
输出:
[[2,4,5,6,7,7,2,6], [5,6,53,6,75,3,53,65], [46,89,24,64,243,25,6], [78,875,24,24,64,363,25]]