python bin文件处理
在下这厢有礼了
文章目录
- 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()
效果图:
学习:
- https://blog.csdn.net/and_then111/article/details/86744938
- python手册
python bin文件处理相关推荐
- python 读取bin文件
python读取bin文件并下发串口 # coding:utf-8import time, serialfrom struct import *import binascii file = open( ...
- python读取bin文件,转成16进制通信协议
1. 项目说明 在进行远程升级单片机程序或者什么别的内容的时候,我们往往需要下载远程的bin文件,并将其内容读出,以切片的方式进行程序的更新.本项目即是使用python编写的一个读取bin文件内容,并 ...
- Python应用开发——制作bin文件
Python应用开发--制作bin文件 目录 Python应用开发--制作bin文件 前言 1 环境搭建 2 代码编写与测试 结束语 前言 什么是bin? bin是二进制文件,其用途依系统或应用而定. ...
- python 二进制文件合并_python 读写和合并二进制bin文件,,在烧录程序的时候,需...
python 读写和合并二进制bin文件,,在烧录程序的时候,需 在烧录程序的时候,需要将多个二进制bin文件合成一个,并且要指定数据段地址偏移量,在数据段之间的地址填充默认值0xff.因为不想手动操 ...
- python下对bin文件的处理
最近项目需要对SD卡中bin文件进行处理,数据是大端模式,需要转换为十进制打印出来.以下是源码 import struct import os if __name__ == '__main__':bi ...
- python跨文件全局变量_Python跨文件全局变量的实现方法示例
前言 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明, ...
- python打开文件_python如何学习
1.Python 文件I/O 本章只讲述所有基本的 I/O 函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函 ...
- python下载文件暂停恢复_python下载文件记录黑名单的实现代码
具体代码如下所示: #!/usr/bin/python # -*- coding: GBK -*- # -*- coding: UTF-8 -*- from ftplib import FTP imp ...
- pycharm打开python文件如何自动创建项目_pycharm 怎么自动创建python头文件?
展开全部 创建方法如下: 进入File->settings->Editor->File and Code Templates->Python Script. 添加以下内容: 1 ...
最新文章
- Anaconda中pytorch环境搭建(包括详细的虚拟环境创建,以及虚拟环境中jupyter notebook的使用)
- ubuntu 12 JDK 编译
- 记录一下提取文件夹中所有文件名字
- objective-c @class 类名和#improt 类名.h的区别
- 微软研究员在ImageNet计算机视觉识别挑战中实现里程碑式突破
- Spring 数据访问那些事儿(二)Spring + JdbcTemplate
- 图解RHEL6安装过程、VMware-tools的安装及repo仓库的配置
- What is the difference between “def” and “val” to define a function
- linux 常用命令05 常用的压缩与解压缩文件
- Go语言学习Day02
- Python 的低性能问题是无法忽视的
- 池化和反池化、卷积层的理解layers.Conv2D,可视化卷积padding
- Landsat 8数据介绍
- 关于在Ubuntu中更新pip时遇到的问题及解决方法
- 【Windows网络编程】完成端口IOCP原理及案例
- 《老路用得上的商学课21—25》消费心理学(二)
- 写作的必备技能,markdown的基本语法
- 计算机系个性策划书,《计算机系12月心理活动策划书》.doc
- 高手怎么抓热点,每天几点操作?
- 年后想做包工头的,这些技巧你们知道吗?