pythonnumpy⽣成⼆进制流_Python读写⼆进制⽂件以及
Numpy读写⼆进制⽂件
1. 什么是.bin⽂件
扩展名为.bin的⽂件就是⼀个⼆进制⽂件(binary)。不同于⽂本⽂件,⼆进制⽂件⽤记事本、Notepad++等打开都是乱码。
像是这样:
但是.bin⽂件可以⽤WINHEX等软件打开。⼆进制⽂件⾥⾯存储的都是数据,只有按照某个预先设定的规则读出,才能明⽩这些数字的具体含义。
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 = size(filepath) #获得⽂件⼤⼩
for i in range(size):
data = ad(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 = ad(1)
print(num[0])
输出结果为:
2.2 写⼆进制⽂件
(1) 假设要把数字123写⼊⼆进制⽂件,⾸先需要把数字int类型转为bytes类型。
<_bytes(1, 'big'):参数 ‘1’ :转为1个字节的bytes; 参数 'big’ :byteorder。
查看某个变量a的类型,可以利⽤type()
a=123
print('a:',type(a))
_bytes(1,'big')
print('b:',type(b))
输出:
(2) open(filepath, 'ab+') :写模式打开⼆进制⽂件。
写⼊时注意:使⽤ ab+ 来完成追加写⼊,使⽤ wb来完成覆盖写⼊。
(3) 关闭binfile.close()
data=123
content= _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+
打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。
以⼆进制格式打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。
w
打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
wb
以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
w+
打开⼀个⽂件⽤于读写。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
wb+
以⼆进制格式打开⼀个⽂件⽤于读写。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
a
打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。
ab
以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。
a+
打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时会是追加模式。如果该⽂件不存在,创建新⽂件⽤于读写。
ab+
以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。如果该⽂件不存在,创建新⽂件⽤于读写。
python怎么读文件夹下的文件夹numpy 保存数据
以3*4数组a为例:
⽅法1:
这种⽅法只能保存为⼆进制⽂件,且不能保存当前数据的⾏列信息,⽂件后缀不⼀定⾮要是bin,也可以为txt,但不影响保存格式,都是⼆进制。
这种保存⽅法对数据读取有要求,需要⼿动指定读出来的数据的的dtype,如果指定的格式与保存时的不⼀致,则读出来的就是错误的数据。
b = numpy.fromfile("filename.bin",dtype = **)
读出来的数据是⼀维数组,需要利⽤
b.shape = 3,4重新指定维数。
⽅法2.
numpy.save("filename.npy",a)
利⽤这种⽅法,保存⽂件的后缀名字⼀定会被置为.npy,这种格式最好只⽤
numpy.load("filename")来读取。
numpy.savetxt("",a) b = numpy.loadtxt("")⽤于处理⼀维和⼆维数组

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。