python io.BytesIO简介及示例代码
作者:魔都吴所谓 发布时间:2021-04-25 04:52:31
io.BytesIO简要介绍及示例
io.BytesIO
是 Python 内置的一个 I/O 类,用于在内存中读写二进制数据。它的作用类似于文件对象,但是数据并不是存储在磁盘上,而是存储在内存中的字节串。你可以像文件对象一样对其进行读写、查找和截断等操作。通常用来操作二进制数据,如图片、音频、视频等。也可以用于测试或者临时存储数据。
代码举例:
import io
# 写入二进制数据到 BytesIO 对象中
data = b"Hello, World!"
bio = io.BytesIO()
bio.write(data)
# 从 BytesIO 对象中读取二进制数据
bio.seek(0)
read_data = bio.read()
print(read_data) # 输出 b'Hello, World!'
在这个示例中,我们首先使用 io.BytesIO()
创建了一个 BytesIO 对象 bio
,然后使用 bio.write()
方法向其中写入了一个二进制数据 data
。接着我们使用 bio.seek(0)
将读写指针移动到起始位置,然后使用 bio.read()
方法从 BytesIO 对象中读取了数据,并将其存储在 read_data
变量中。最后我们输出了 read_data
,可以看到其与原来的二进制数据 data
完全相同。
输出的为什么是b开头的
在 Python 中,以 b
开头的字符串表示的是二进制字符串(bytes)。这种字符串是由字节组成的,每个字节都有一个对应的整数值,范围在 0 到 255 之间。二进制字符串与普通字符串不同,因为普通字符串是由 Unicode 字符组成的,每个字符都对应一个 Unicode 码点。
在上面的示例中,我们在 data
变量中存储了一个二进制字符串,它以 b
开头。因此,当我们从 BytesIO 对象中读取数据并将其存储在 read_data
变量中时,它也是一个二进制字符串,同样以 b
开头。这是 Python 对二进制字符串的一种标识方式,用于区分它们与普通字符串的不同。
bytes转换成字符串
如果要将二进制字符串转换成普通字符串,可以使用字符串的 decode()
方法。decode() 方法将一个字节串(bytes)转换成一个字符串(str),需要指定一个编码方式。在不知道编码方式的情况下,可以使用默认编码方式(通常为 UTF-8)。
下面是一个示例:
import io
# 写入二进制数据到 BytesIO 对象中
data = b"Hello, World!"
bio = io.BytesIO()
bio.write(data)
# 从 BytesIO 对象中读取二进制数据并转换成字符串
bio.seek(0)
read_data = bio.read().decode()
print(read_data) # 输出 'Hello, World!'
在这个示例中,我们在读取二进制数据后,使用 decode()
方法将其转换成了一个普通字符串。如果不指定编码方式,则默认使用 UTF-8 编码。
来源:https://blog.csdn.net/qq_41604569/article/details/129835209


猜你喜欢
- 1、使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户<?php /
- 1、版本说明 :python 2.7.10, Django (1.6.11.6),centos72、步骤说明:A、django 建立项目dj
- 如何准确获知对方来访问的时间和URL?代码如下:logfile.asp<%Dim ValidLog '&n
- 问题微信公众号获取code时的跳转链接,默认是获取当前页面的链接,代码如下:// 说明:获取当前页面的url地址function GetCu
- 1. 进入SSMS点击展开sqlserver代理,右键点击“作业”,然后选择新建作业。2. 填写名称
- 本文实例讲述了GO语言延迟函数defer用法。分享给大家供大家参考。具体分析如下:defer 在声明时不会立即执行,而是在函数 return
- 兄弟组件之间的通信同样是在项目中经常会遇到的组件间的通信问题之一, 这种问题的最根本方法就是: 把兄弟组件内部的变量提升到一个中央仓库。借助
- 需要在程序中使用二维数组,网上找到一种这样的用法: #创建一个宽度为3,高度为4的数组#[[0,0,0], # [0,0,0],#
- 很多时候我们在操作过页面时候,特别是增删改操作之后,数据会有所改变,这个时候我们希望返回的界面中的数据要和数据库中的数据进行同步,就需要刷新
- Oracle数据库开发应用中经常对数据库管理员有这样的需求,对比两个不同实例间某模式下对象的差异或者对比两个不同实例某模式下表定义的差异性,
- 主程序mainaddfunc.pyfrom flask import Flask, render_template, request, ur
- 1 解决方案【方案一】载入模型结构放在全局,即tensorflow会话外层。'''载入模型结构:最关键的一步'
- pandas中有时需要按行依次对.csv文件读取内容,那么如何进行呢?我们来完整操作一遍,假设我们已经有了一个.csv文件。# 1.导入包i
- 1、应该将 CSS 放置于结构的上方(一般放置于 head 元素内)。CSS 是解释型语言,Firefox 和 IE 在等待 CSS 传输完
- 0. Intro在pytorch或者其他深度学习框架中,有许多超参数需要调整,包括learning_rate,training_data_p
- # _*_ coding:utf-8 _*_# name gefile.pyimport osimport statimport socke
- 一、字典的基本操作1.定义字典 字典也是一个列表型的数据结构,字典的数据是用“{ }&rd
- 前言for循环是Go语言唯一的循环结构,最近在做一个基于RabbitMQ的应用,由于官方的qos没有golang的版本,所以出了一点问题。问
- 一、tooltip(提示框) 源码文件: Tooltip.jsTooltip.scss实现原理: 1、获取当前
- 跨平台的事件EventUtil对象 EventUtil: var EventUtil={ addEventHandler:function(