聊一聊python 的readinto

python的file对象拥有readinto方法,可以直接将二进制数据写入到可变缓冲区中,实践中,写入 bytearray , bytearray 是字节数组,这个数组有多大,readinto方法就尝试将多少内容写入其中。通常,我们使用open函数打开一个文件,读取内容时,使用的都是read,readline,readlines,所返回的都是字符串,几乎不会使用到readinto方法。这是因为,我们所做的事情都偏向于业务应用,但如果你向更底层的技术去学习,就会认识到,对于数据的处理,我们需要更接近二进制的方式。

下面是一个简单的示例

import os.path

def read_into_buffer(filename):

buf = bytearray(os.path.getsize(filename))

with open(filename, 'rb') as f:

f.readinto(buf)

return buf

with open('sample.bin', 'wb') as f:

f.write(b'Hello World')

buf = read_into_buffer('sample.bin')

buf[0:1] = b'h'

with open('sample.bin', 'wb') as f:

f.write(buf)

注意看buf[0:1] = b'h',我通过切片的方式,直接修改了buf,如果buf的类型是字符串,这样的操作是不被允许的。如果你的工作偏向于网络底层,比如socket编程,倘若你所有的操作都是在str基础上进行,那么你不得不将bytes类型数据转换为str,要知道,socket 通信时,发送和接收的数据都是bytes类型。

操作bytes,bytearray是否会比str更快,我手头没有很有说服力的证据,如果单纯的从这三种类型数据的结构进行推理和猜测,我相信str是最慢的,对于网络底层数据的处理,比如在socket层面解析http请求的返回数据,bytes和bytearray肯定会更快,我也是在阅读python源码http.client 的时候看到了readinto的用法,一个直观的感受便是,对socket数据的处理,是不会使用str的。

python的read_聊一聊python 的readinto相关推荐

  1. 聊一聊 Python 安装中的 --enable-shared

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 今天在 CentOS 7.4 使用源码编译安装 Python-2.7.15 的时候,发现了一个 ...

  2. 聊一聊Python与C++的不同(一)

    之前一直在学C,C++,还有一些Java,抱着兴趣去选了一个Python,当我看到老师敲得代码后,我惊叹,Python还可以这样,如果用C的话,不得麻烦死,而且在写函数时没有用大括号,靠缩进分层次,显 ...

  3. 普通人也要学python吗-普通人学Python有意义吗?

    普通人学Python有意义吗?Python作为一种跨平台的计算机程序设计语言,近些年来越来越受到企业和IT从业者的青睐.那么,普通人是否需要学习Python呢?学会Python有什么意义呢?今天小编就 ...

  4. 学python好不好-学习python的前景怎么样?

    Python是一种计算机程序设计语言,可应用于网页开发和软件开发等方面.Python优雅.明确.简单,入门时间按天计算.免费开源.速度快.可移植性,在各领域应用广泛.那么.Python的火爆只是因为这 ...

  5. python忠告_学习Python一段时间,老司机给上路新手的3点忠告!

    在你学习编程的过程中,是否有过以下经历,或正在面临类似的局面:网上找了很多资料,不知道从哪里看起 买了本书,过了很久也没有看完第一章 开始还能跟着写几行代码,后来突然就看不懂了 也看了些教程和视频,似 ...

  6. python入门经典-入门python有什么好的书籍推荐?

    可以看下 @苏克1900 童鞋推荐的书单 入门必看|5 位知乎大佬们[刘志军 (Python 之禅 作者)@刘志军. leoxin (菜鸟学 Python 作者)@leoxin. 刘顺祥 (数据分析 ...

  7. Python基础教程之Python简介

    #「笔耕不辍」–生命不息,写作不止# 1. Python是什么? (1)在介绍Python之前,先和大家聊一聊什么是编程语言.大家或许都知道,要让计算机为我们干活,就需要给计算机下指令,那么编程语言就 ...

  8. python前景怎么样-学习python的前景怎么样?

    Python是一种计算机程序设计语言,可应用于网页开发和软件开发等方面.Python优雅.明确.简单,入门时间按天计算.免费开源.速度快.可移植性,在各领域应用广泛.那么.Python的火爆只是因为这 ...

  9. python适合兼职吗-python兼职副业#最适合上班族的25个副业

    [www.uzhan5.com - U5副业网]#python兼职副业# 关于穷,去年有了一个更学术的说法:隐形贫困人口. 就是因为有太多"种草达人",让我们为了物质生活超前消费, ...

最新文章

  1. 96. 奇怪的汉诺塔【递推】
  2. 看到喜欢的人时的心跳​
  3. linux游戏调试,LINUX游戏服务器的安装与调试.doc
  4. easyconnect获取服务端配置信息失败_图文解析 Nacos 配置中心的实现
  5. 冯诺依曼计算机的组成
  6. 解决DDOS攻击生产案例
  7. LA 3989 - Ladies' Choice 稳定婚姻问题
  8. 从环境搭建探讨做事的方法
  9. struct msghdr和struct cmsghdr【转载】
  10. ASP.NET MVC 4 tutorial
  11. http接口开发请求参数签名实用工具类
  12. 无线射频识别的应用方案有哪些?
  13. 使用LabelMe标注目标检测数据集并转换为VOC2017格式
  14. 吉他的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. UltraVNC(TightVNC、WinVNC)源码分析文档
  16. word 项目符号(或称之为无序编号),默认,可以采用星号加空格方式实现。
  17. CE修改器入门:精确数值扫描
  18. 神了!有人用一个项目把23种设计模式与六大原则融会贯通了
  19. MTK平台闪光灯驱动分析
  20. 清理zabbix监控中磁盘空间不足

热门文章

  1. 线段树(区间合并) LA 3989 Ray, Pass me the dishes!
  2. “请求未在nginx中配置的域名时,给浏览器返回508错误码”配置示例
  3. poj 1469(二分图最大匹配)
  4. error: invalid use of incomplete type 'struct word'|
  5. 电信业降薪可能并不完全是空穴来风
  6. 华为云大数据存储的冗余方式是三副本_揭秘!10+位DBA大神测评华为云DDS增强版实感...
  7. 黑马博客——详细步骤(七)项目功能的实现之文章管理
  8. JavaScript快速上手
  9. 一文搞懂Python Unittest测试方法执行顺序
  10. 我❤️—Python自动化测试,30岁熬到月薪20K+,分享我的多年面试经…