美文网首页
python 将二进制数据读取到可变缓冲区

python 将二进制数据读取到可变缓冲区

作者: 孙广宁 | 来源:发表于2022-05-20 23:22 被阅读0次
5.9 我们想将二进制数据读入到一个可变缓冲区,中间不经过任何的拷贝环节
  • 可以使用readinto()方法
>>> def r_into_buffer(filename):
...     buf = bytearray(os.path.getsize(filename))
...     with open(filename,'rb') as f:
...         f.readinto(buf)
...     return buf
...
>>> with open('test.bin','wb') as f:
...     f.write(b'Hello World')
...
11
>>> buf = r_into_buffer('test.bin')
>>> buf
bytearray(b'Hello World')
>>> buf[0:5]
bytearray(b'Hello')
>>> with open('new_test.bin','wb') as f:
...     f.write(buf)
...
11
>>> with open('new_test.bin','rb') as f:
...     f.read()
...
b'Hello World'
>>>
  • readinto()方法可用来将数据填充到任何预分配的数组中

  • 和普通的read方法不同的是,readinto是为已存在的缓冲区填充内容,而不是分配新的对象然后再将他们返回。

  • 可以使用readinto方法来避免额外的内存分配动作。

  • 如:我们如果正在读取一个由相同大小的记录所组成的二进制文件

>>> r_s = 32
>>> buf = bytearray(r_s)
>>> with open('test.bin','rb') as f:
...     while True:
...         n = f.readinto(buf)
...         if n < r_s:
...             print("test data < 32 will break")
...             break
...         else:
...             print("test data >32")
...
test data < 32 will break
>>>
  • memoryview函数,内存映像函数,可以是我们对已经存在的缓冲区数据做处理,但是不涉及到拷贝动作,还可以修改内容

相关文章

  • python 将二进制数据读取到可变缓冲区

    5.9 我们想将二进制数据读入到一个可变缓冲区,中间不经过任何的拷贝环节 可以使用readinto()方法 rea...

  • 可变数据和不可变数据

    NSData 是不可变二进制数据 NSMutableData 是可变的二进制数...

  • Netty源码之写入数据

    写入数据,是从缓冲区写入到通道中。读取数据和写入数据是相对概念,从通道读取到缓冲区,从缓冲区写入到通道。Pipel...

  • File文件读写

    一、python3读文本 二、处理二进制文件 使用struct来解析二进制数据 三、设置文件的缓冲 python文...

  • 修改数据源步骤

    //1、数据源用可变字典存储(需要alloc) //2、先把(获取到的(需要修改成的))数据变成可变的 //3、再...

  • 2020-02-09 Python文本处理

    1. Python编码解码 将文本转换为二进制数据就是编码,将二进制数据转换为文本就是解码。编码和解码要按照一定的...

  • 高性能服务器程序框架

    同步I/O模型要求用户代码自行执行I/O操作(将数据从内核缓冲区读入用户缓冲区,或将数据从用户缓冲区写入内核缓冲区...

  • NIO 总结

    核心部分: Buffer、Channel、Selector NIO操作面向缓冲区,数据从Channel读取到Buf...

  • 列表

    Python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合 容器...

  • 2018年6月19日【python学习笔记】

    列表 python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合...

网友评论

      本文标题:python 将二进制数据读取到可变缓冲区

      本文链接:https://www.haomeiwen.com/subject/kdvxprtx.html