python处理二进制bin文件
admin
2023-07-05 19:24:26
0次

  1. 什么是.bin文件

  扩展名为.bin的文件就是一个二进制文件(binary)。不同于文本文件,二进制文件用记事本、Notepad++等打开都是乱码。

  像是这样:

  

python处理二进制bin文件


  但是.bin文件可以用WINHEX等软件打开。二进制文件里面存储的都是数据,只有按照某个预先设定的规则读出,才能明白这些数字的具体含义。

  WINHEX将二进制文件内容转为十六进制的形式展现出来:

  

python处理二进制bin文件


  二进制文件相比于文本文件的优点:节约存储空间、读写速度快、有一定的加密保护作用。

  关于二进制文件与文本文件,可以参考下这个博客程序员别唬我系列之:二进制文件

  2. 二进制文件读写

  2.1 读二进制文件

  读二进制文件 “x.bin” 的内容,每次输出一个字节。

  (1) 文件路径放在filepath中,这里将.bin文件与代码文件放在了同一个文件夹下,因此没有写绝对路径。

  (2) open(filepath, 'rb'):以读的形式打开文件文件,注意使用 rb 来读二进制文件。

  (3) 记得close: binfile.close()

  import struct

  import os

  if __name__ == '__main__':

  filepath='x.bin'

  binfile = open(filepath, 'rb') #打开二进制文件

  size = os.path.getsize(filepath) #获得文件大小

  for i in range(size):

  data = binfile.read(1) #每次输出一个字节

  print(data)

  binfile.close()

  运行,输出结果:

  

python处理二进制bin文件


  如果想看到十进制的结果,可以使用python中的struct.unpack()方法:

  struct.unpack('B', data):这里的参数B的含义是将C结构数据的unsigned char 类型转为python中的integer

  这里得到的num是tuple类型,因此使用num[0]将数字取出。

  for i in range(size):

  data = binfile.read(1)

  num = struct.unpack('B', data)

  print(num[0])

  输出结果为:

  

python处理二进制bin文件


  2.2 写二进制文件

  (1) 假设要把数字123写入二进制文件,首先需要把数字int类型转为bytes类型。

  data.to_bytes(1, 'big'):参数 ‘1’ :转为1个字节的bytes; 参数 'big’ :byteorder。

  查看某个变量a的类型,可以利用type()

  a=123

  print('a:',type(a))

  b=a.to_bytes(1,'big')

  print('b:',type(b))

  输出:无锡哪家医院妇科好 http://www.csfk0731.com/

  

python处理二进制bin文件


  (2) open(filepath, 'ab+') :写模式打开二进制文件。

  写入时注意:使用 ab+ 来完成追加写入,使用 wb来完成覆盖写入。

  (3) 关闭binfile.close()

  data=123

  content= data.to_bytes(1, 'big')

  filepath='123.bin'

  binfile = open(filepath, 'ab+') #追加写入

  binfile.write(content)

  print('content',content)

  binfile.close()

  2.3 打开文件模式

  列了下打开文件的不同模式,也就是open()里第二个参数。 带b的参数表示操作二进制文件,不带b的操作文本文件。

  摘自Python文件读写(open(),close(),with open() as f…

  模式  描述

  r  以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

  rb  以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

  r+  打开一个文件用于读写。文件指针将会放在文件的开头。

  rb+  以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

  w  打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

  wb  以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

  w+  打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

  wb+  以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

  a  打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

  ab  以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

  a+  打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

  ab+  以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...