在下这厢有礼了

文章目录

  • 0. 软件准备
  • 1. 基础知识掌握
  • 2. bin文件的打开和模式
  • 3. bin文件读取
  • 4. bin文件写入
  • 5. bin文件的大小端写入
  • 6. bin文件的写0
  • 7. bin文件的写1
  • 8. bin文件的合并
  • 9. bin文件写入字符串

0. 软件准备

python 版本 Python 3.7.1
大概花费时间:3天半抽空学习的知识分享

bin文件查看器:https://pan.baidu.com/s/1_XebNTlh052zt5Xa58xDMQ 提取码:f4uj

生bin的工具我就不提供了,你自己找找吧!

1. 基础知识掌握

bin文件: open函数创建file对象

打开文件的不同模式:例子:open(“file.txt”,‘r’)

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
t 文本默认
x 写模式,新建一个文件,如果该文件存在,则会报错。
b 二进制模式
+ 打开一个文件进行更新(可读可写)。

bin文件的python struct库 读写属性

a = struct.pack('B',0x00)
b = struct.unpack(‘B’,a)
这块可以使用python编译的看一下哦!(你就明白了)1. struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组)。其函数原型为:struct.pack(fmt, v1, v2, ...),参数fmt是格式字符串,关于格式字符串的相关信息在下面有所介绍。v1, v2, ...表示要转换的python值。2. struct.unpack做的工作刚好与struct.pack相反,用于将字节流转换成python数据类型。它的函数原型为:struct.unpack(fmt, string),该函数返回一个元组
Format C Type Python 字节数
x pad byte no value 1
c char string of length 1 1
b signed char integer 1
B unsigned char integer 1
? _Bool bool 1
h short integer 2
H unsigned short integer 2
i int integer 4
I unsigned int integer or long 4
l long integer 4
L unsigned long long 4
q long long long 8
Q unsigned long long long 8
f float float 4
d double float 8
s char[] string 1
p char[] string 1
P void * long

这快就类似于C语言中的字节对齐,大小端的选择

例子:(后面有说明)
a = struct.pack('<I',0x12345678)  #四字节存入,按小端存储
b = struct.pack('>I',0x12345678)  #四字节存入,按大端存储
Character Byte order Size and alignment
@ native native 凑够4个字节
= native standard 按原字节数
< little-endian 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 struct
import osdef ReadFile():filepath='7.bin'binfile = open(filepath, 'rb') #打开二进制文件size = os.path.getsize(filepath) #获得文件大小for i in range(size):data = binfile.read(1) #每次输出一个字节print(data)binfile.close()
if __name__ == '__main__':ReadFile()

7.bin文件如下

效果图

4. bin文件写入

import struct
import osdef WriteFile():filepath='7.bin'data = 123binfile = open(filepath, 'ab+') #打开二进制文件(追加完成)a = struct.pack('B',data)binfile.write(a)binfile.close()
if __name__ == '__main__':WriteFile()

7.bin文件

效果图

5. bin文件的大小端写入

import structfile_name = "5.bin"
def Big_little_endian():file = open(file_name,'wb')a = struct.pack('I',0x12345678)  #四字节存入,正常状态b = struct.pack('<I',0x12345678)  #四字节存入,按小端存储c = struct.pack('>I',0x12345678)  #四字节存入,按大端存储file.write(a)file.write(b)file.write(c)file.close()if __name__ == '__main__':Big_little_endian()

效果图

6. bin文件的写0

import structbin_file_1 = "1.bin"def write0x00():file = open(bin_file_1,'wb')for i in range(1,0xFF):   data = struct.pack('B',0x00)  #写0file.write(data)file.closeif __name__ == '__main__':write0x00()

效果图:

7. bin文件的写1

import structbin_file_2 = "2.bin"def write0xFF():file = open(bin_file_2,'wb')for i in range(0,0xFF):   data = struct.pack('B',0xFF)  #写1file.write(data)file.closeif __name__ == '__main__':write0x00()

效果图:

8. bin文件的合并

1.bin和2.bin合并成merage.bin

import structbin_file_1 = "1.bin"
bin_file_2 = "2.bin"
bin_file_merage = "merage.bin"def merage_bin():file_merage = open(bin_file_merage,'wb')file_1 = open(bin_file_1,'rb')data = file_1.read()file_merage.write(data)    file_2 = open(bin_file_2,'rb')data = file_2.read()file_merage.write(data)file_1.close()file_2.close()file_merage.close()if __name__ == '__main__':merage_bin()

效果图:

9. bin文件写入字符串

import struct
import stringbin_file_1 = "7.bin"enter = memoryview(b"STARTX") #返回值是元组def writeString():file = open(bin_file_1,'wb')for i in enter:data = struct.pack('B',i)file.write(data)file.closeif __name__ == '__main__':writeString()

效果图:

学习:

  1. https://blog.csdn.net/and_then111/article/details/86744938
  2. python手册

python bin文件处理相关推荐

  1. python 读取bin文件

    python读取bin文件并下发串口 # coding:utf-8import time, serialfrom struct import *import binascii file = open( ...

  2. python读取bin文件,转成16进制通信协议

    1. 项目说明 在进行远程升级单片机程序或者什么别的内容的时候,我们往往需要下载远程的bin文件,并将其内容读出,以切片的方式进行程序的更新.本项目即是使用python编写的一个读取bin文件内容,并 ...

  3. Python应用开发——制作bin文件

    Python应用开发--制作bin文件 目录 Python应用开发--制作bin文件 前言 1 环境搭建 2 代码编写与测试 结束语 前言 什么是bin? bin是二进制文件,其用途依系统或应用而定. ...

  4. python 二进制文件合并_python 读写和合并二进制bin文件,,在烧录程序的时候,需...

    python 读写和合并二进制bin文件,,在烧录程序的时候,需 在烧录程序的时候,需要将多个二进制bin文件合成一个,并且要指定数据段地址偏移量,在数据段之间的地址填充默认值0xff.因为不想手动操 ...

  5. python下对bin文件的处理

    最近项目需要对SD卡中bin文件进行处理,数据是大端模式,需要转换为十进制打印出来.以下是源码 import struct import os if __name__ == '__main__':bi ...

  6. python跨文件全局变量_Python跨文件全局变量的实现方法示例

    前言 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明, ...

  7. python打开文件_python如何学习

    1.Python 文件I/O 本章只讲述所有基本的 I/O 函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函 ...

  8. python下载文件暂停恢复_python下载文件记录黑名单的实现代码

    具体代码如下所示: #!/usr/bin/python # -*- coding: GBK -*- # -*- coding: UTF-8 -*- from ftplib import FTP imp ...

  9. pycharm打开python文件如何自动创建项目_pycharm 怎么自动创建python头文件?

    展开全部 创建方法如下: 进入File->settings->Editor->File and Code Templates->Python Script. 添加以下内容: 1 ...

最新文章

  1. Anaconda中pytorch环境搭建(包括详细的虚拟环境创建,以及虚拟环境中jupyter notebook的使用)
  2. ubuntu 12 JDK 编译
  3. 记录一下提取文件夹中所有文件名字
  4. objective-c @class 类名和#improt 类名.h的区别
  5. 微软研究员在ImageNet计算机视觉识别挑战中实现里程碑式突破
  6. Spring 数据访问那些事儿(二)Spring + JdbcTemplate
  7. 图解RHEL6安装过程、VMware-tools的安装及repo仓库的配置
  8. What is the difference between “def” and “val” to define a function
  9. linux 常用命令05 常用的压缩与解压缩文件
  10. Go语言学习Day02
  11. Python 的低性能问题是无法忽视的
  12. 池化和反池化、卷积层的理解layers.Conv2D,可视化卷积padding
  13. Landsat 8数据介绍
  14. 关于在Ubuntu中更新pip时遇到的问题及解决方法
  15. 【Windows网络编程】完成端口IOCP原理及案例
  16. 《老路用得上的商学课21—25》消费心理学(二)
  17. 写作的必备技能,markdown的基本语法
  18. 计算机系个性策划书,《计算机系12月心理活动策划书》.doc
  19. 高手怎么抓热点,每天几点操作?
  20. 年后想做包工头的,这些技巧你们知道吗?

热门文章

  1. elk搭建及应用服务日志采集
  2. 虚拟同步发电机离网并网无缝切换MATLAB仿真模型#VSG
  3. 英伟达Nvidia TX1 TX2 串口通信方法
  4. Python安装遇到2502,2503等问题处理方法。
  5. 解决科研小问题 | Error: Unable to find solver DLL path from sim file
  6. 21、收付款合同管理介绍
  7. NLPIR九眼智能审核平台助合同文本深度核查
  8. Matlab进行彩色图像直方图匹配(不用histeq函数)
  9. FreeLine 简明指南及注意事项
  10. 李恒君 导演创作 影视制作导演进阶课程 学后心得