python 处理二进制文件
扩展名为.bin的文件就是一个二进制文件(binary)。不同于文本文件,二进制文件用记事本、Notepad++等打开都是乱码。
但是.bin文件可以用UltraEdit等软件打开。二进制文件里面存储的都是数据,只有按照某个预先设定的规则读出,才能明白这些数字的具体含义。
UltraEdit将二进制文件内容转为十六进制的形式展现出来
二进制文件相比于文本文件的优点:节约存储空间、读写速度快、有一定的加密保护作用。
Python 对二进制文件读写:
#!/usr/bin/env python
# coding=utf-8
import struct
import os
filepath = '123.bin'
def read_binfile(fpath):
filepath = fpath
binfile = open(filepath, 'rb')
size = os.path.getsize(filepath)
for i in range(size):
data = binfile.read(1) # #每次输出一个字节
num = struct.unpack('B', data) #参数B的含义是将C结构数据的unsigned char 类型转为python中的integer这里得到的num是tuple类型,因此使用num[0]将数字取出
print(num[0])
# print(data)
binfile.close()
def write_binfile(fpath):
data = 16
content = data.to_bytes(1, 'big') # 参数 ‘1’ :转为1个字节的bytes; 参数 'big’ :byteorder。
filepath = fpath
binfile = open(filepath, 'ab+')
binfile.write(content)
print("content:", content)
binfile.close()
if __name__ == '__main__':
read_binfile(filepath)
# write_binfile(filepath)