python的read_聊一聊python 的readinto
聊一聊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相关推荐
- 聊一聊 Python 安装中的 --enable-shared
由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 今天在 CentOS 7.4 使用源码编译安装 Python-2.7.15 的时候,发现了一个 ...
- 聊一聊Python与C++的不同(一)
之前一直在学C,C++,还有一些Java,抱着兴趣去选了一个Python,当我看到老师敲得代码后,我惊叹,Python还可以这样,如果用C的话,不得麻烦死,而且在写函数时没有用大括号,靠缩进分层次,显 ...
- 普通人也要学python吗-普通人学Python有意义吗?
普通人学Python有意义吗?Python作为一种跨平台的计算机程序设计语言,近些年来越来越受到企业和IT从业者的青睐.那么,普通人是否需要学习Python呢?学会Python有什么意义呢?今天小编就 ...
- 学python好不好-学习python的前景怎么样?
Python是一种计算机程序设计语言,可应用于网页开发和软件开发等方面.Python优雅.明确.简单,入门时间按天计算.免费开源.速度快.可移植性,在各领域应用广泛.那么.Python的火爆只是因为这 ...
- python忠告_学习Python一段时间,老司机给上路新手的3点忠告!
在你学习编程的过程中,是否有过以下经历,或正在面临类似的局面:网上找了很多资料,不知道从哪里看起 买了本书,过了很久也没有看完第一章 开始还能跟着写几行代码,后来突然就看不懂了 也看了些教程和视频,似 ...
- python入门经典-入门python有什么好的书籍推荐?
可以看下 @苏克1900 童鞋推荐的书单 入门必看|5 位知乎大佬们[刘志军 (Python 之禅 作者)@刘志军. leoxin (菜鸟学 Python 作者)@leoxin. 刘顺祥 (数据分析 ...
- Python基础教程之Python简介
#「笔耕不辍」–生命不息,写作不止# 1. Python是什么? (1)在介绍Python之前,先和大家聊一聊什么是编程语言.大家或许都知道,要让计算机为我们干活,就需要给计算机下指令,那么编程语言就 ...
- python前景怎么样-学习python的前景怎么样?
Python是一种计算机程序设计语言,可应用于网页开发和软件开发等方面.Python优雅.明确.简单,入门时间按天计算.免费开源.速度快.可移植性,在各领域应用广泛.那么.Python的火爆只是因为这 ...
- python适合兼职吗-python兼职副业#最适合上班族的25个副业
[www.uzhan5.com - U5副业网]#python兼职副业# 关于穷,去年有了一个更学术的说法:隐形贫困人口. 就是因为有太多"种草达人",让我们为了物质生活超前消费, ...
最新文章
- 96. 奇怪的汉诺塔【递推】
- 看到喜欢的人时的心跳​
- linux游戏调试,LINUX游戏服务器的安装与调试.doc
- easyconnect获取服务端配置信息失败_图文解析 Nacos 配置中心的实现
- 冯诺依曼计算机的组成
- 解决DDOS攻击生产案例
- LA 3989 - Ladies' Choice 稳定婚姻问题
- 从环境搭建探讨做事的方法
- struct msghdr和struct cmsghdr【转载】
- ASP.NET MVC 4 tutorial
- http接口开发请求参数签名实用工具类
- 无线射频识别的应用方案有哪些?
- 使用LabelMe标注目标检测数据集并转换为VOC2017格式
- 吉他的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- UltraVNC(TightVNC、WinVNC)源码分析文档
- word 项目符号(或称之为无序编号),默认,可以采用星号加空格方式实现。
- CE修改器入门:精确数值扫描
- 神了!有人用一个项目把23种设计模式与六大原则融会贯通了
- MTK平台闪光灯驱动分析
- 清理zabbix监控中磁盘空间不足
热门文章
- 线段树(区间合并) LA 3989 Ray, Pass me the dishes!
- “请求未在nginx中配置的域名时,给浏览器返回508错误码”配置示例
- poj 1469(二分图最大匹配)
- error: invalid use of incomplete type 'struct word'|
- 电信业降薪可能并不完全是空穴来风
- 华为云大数据存储的冗余方式是三副本_揭秘!10+位DBA大神测评华为云DDS增强版实感...
- 黑马博客——详细步骤(七)项目功能的实现之文章管理
- JavaScript快速上手
- 一文搞懂Python Unittest测试方法执行顺序
- 我❤️—Python自动化测试,30岁熬到月薪20K+,分享我的多年面试经…