Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从二进制文件中读取多行_Python - Fatal编程技术网

Python 从二进制文件中读取多行

Python 从二进制文件中读取多行,python,Python,我有一个二进制文件,我想读取它的内容, 这是密码 with open ('file1', 'rb') as fp: itemlist = pickle.load(fp) print(itemlist) 我用来写入文件的代码是 with open('file1', 'ab') as fp: pickle.dump(training, fp) 该文件包含许多长度为4的列表。 问题是打印(itemlist)只是打印最后一个列表 虽然我希望它们都转换成二维numpy数组,但我甚至可以看到文件大小

我有一个二进制文件,我想读取它的内容, 这是密码

with open ('file1', 'rb') as fp:

itemlist = pickle.load(fp)
print(itemlist)
我用来写入文件的代码是

with open('file1', 'ab') as fp:

pickle.dump(training, fp)
该文件包含许多长度为4的列表。 问题是打印(itemlist)只是打印最后一个列表 虽然我希望它们都转换成二维numpy数组,但我甚至可以看到文件大小随着每次追加调用而逐渐增加


我怎么做

如果您有许多长度为4的列表,则应将它们转储并加载为长度为4的列表。否则,您必须反复调用pickle.load,直到文件用尽。

首先在保存后构建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]]

您是否多次写入该文件并每次追加?如果是这样,read将只读取您pickle的第一个对象(例如list)。您需要循环pickle.load来读取所有对象。二进制文件没有行。