2023年12月2日发(作者:)
python保存bin文件,pythonbin文件处理1. 基础知识掌握bin文件: open函数创建file对象打开文件的不同模式:例子:open(“”,‘r’)模式 描述r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。r+ 打开一个文件用于读写。文件指针将会放在文件的开头。rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。t 文本默认x 写模式,新建一个文件,如果该文件存在,则会报错。b 二进制模式+ 打开一个文件进行更新(可读可写)。bin文件的python struct库 读写属性a = ('B',0x00)b = (‘B’,a)这块可以使用python编译的看一下哦!(你就明白了)1. 用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组)。其函数原型为:(fmt, v1, v2, ...),参数fmt是格式字符串,关于格式字符串的相关信息在下面有所介绍。v1, v2, ...表示要转换的python值。2. 做的工作刚好与相反,用于将字节流转换成python数据类型。它的函数原型为:(fmt, string),该函数返回一个元组Format C Type Python 字节数x pad byte no value 1c char string of length 1 1b signed char integer 1B unsigned char integer 1 _Bool bool 1h short integer 2H unsigned short integer 2i int integer 4I unsigned int integer or long 4l long integer 4L unsigned long long 4q long long long 8Q unsigned long long long 8f float float 4d double float 8s char[] string 1p char[] string 1P void * long这快就类似于C语言中的字节对齐,大小端的选择例子:(后面有说明)a = ('b = ('>I',0x12345678) #四字节存入,按大端存储Character Byte order Size and alignment@ native native 凑够4个字节= native standard 按原字节数> big-endian standard 按原字节数! network (= big-endian) standard 按原字节数2. bin文件的打开和模式file = open(file_name,'wb')#二进制写模式file = open(file_name,'rb')#二进制读模式file = open(file_name,'ab')#二进制补充读写模式3. bin文件读取import structimport osdef ReadFile():filepath=''binfile = open(filepath, 'rb') #打开二进制文件size = e(filepath) #获得文件大小for i in range(size):data = (1) #每次输出一个字节print(data)()if __name__ == '__main__':ReadFile()文件如下4. bin文件写入import structimport osdef WriteFile():filepath=''data = 123binfile = open(filepath, 'ab+') #打开二进制文件(追加完成)a = ('B',data)(a)()if __name__ == '__main__':WriteFile()文件效果图5. bin文件的大小端写入import structfile_name = ""def Big_little_endian():file = open(file_name,'wb')a = ('I',0x12345678) #四字节存入,正常状态b = ('c = ('>I',0x12345678) #四字节存入,按大端存储(a)(b)(c)()if __name__ == '__main__':Big_little_endian()6. bin文件的写0import structbin_file_1 = ""def write0x00():file = open(bin_file_1,'wb')for i in range(1,0xFF):data = ('B',0x00) #写(data)f __name__ == '__main__':write0x00()效果图:7. bin文件的写1import structbin_file_2 = ""def write0xFF():file = open(bin_file_2,'wb')for i in range(0,0xFF):data = ('B',0xFF) #写(data)f __name__ == '__main__':write0x00()8. bin文件的合并和合并成ort structbin_file_1 = ""bin_file_2 = ""bin_file_merage = ""def merage_bin():file_merage = open(bin_file_merage,'wb')file_1 = open(bin_file_1,'rb')data = file_()file_(data)file_2 = open(bin_file_2,'rb')data = file_()file_(data)file_()file_()file_()if __name__ == '__main__':merage_bin()效果图:9. bin文件写入字符串import structimport stringbin_file_1 = ""enter = memoryview(b"STARTX") #返回值是元组def writeString():file = open(bin_file_1,'wb')for i in enter:data = ('B',i)(data)f __name__ == '__main__':writeString()效果图:
发布评论