从二进制文件读取多行

时间:2018-07-20 11:44:38

标签: python

我有一个二进制文件,我想读取其内容, 这是代码

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数组。我什至可以看到每次追加调用时文件大小都会逐渐增加。

我该怎么办?

2 个答案:

答案 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]]