python处理二进制文件(.bin) |
您所在的位置:网站首页 › 文件后bin怎么打开 › python处理二进制文件(.bin) |
最近遇到了python处理.bin文件的一些问题,简单地罗列一下。 1. 什么是.bin文件 2. 二进制文件读写 2.1 读二进制文件 2.2 写二进制文件 2.3 打开文件模式 1. 什么是.bin文件扩展名为.bin的文件就是一个二进制文件(binary)。不同于文本文件,二进制文件用记事本、Notepad++等打开都是乱码。 像是这样: WINHEX将二进制文件内容转为十六进制的形式展现出来: 关于二进制文件与文本文件,可以参考下这个博客程序员别唬我系列之:二进制文件 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中的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])输出结果为: (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))输出: (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+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |