python基础-BytesIO,StringIO
- StringIO
- 常用方法
- 示例代码
- strIO截取
- 利用缓存写入文件
- BytesIO
- 通过缓存存入文件
- 通过缓存读取文件
- 文件句柄赋值BytesIO
想要了解文件读取操作的,可以参考
文件读取 文件读取 文件读取
StringIO
常用方法
1、read
s.read([n]):参数n用于限定读取的长度,类型为int,默认为从当前位置读取对象s中所有的数据。读取结束后,位置被移动。
2、readline
s.readline([length]):length用于限定读取的结束位置,类型为int,缺省为None,即从当前位置读取至下一个以’\n’为结束符的当前行。读位置被移动。
3、readlines
s.readlines():读取所有行
4、write
s.write(s):从读写位置将参数s写入到对象s。参数为str或unicode类型,读写位置被移动。
5、writeline
s.writeline(s):从读写位置将list写入给对象s。参数list为一个列表,列表的成员为str或unicode类型。读写位置被移动
6、getvalue
s.getvalue():返回对象s中的所有数据
7、truncate
s.truncate([size]):从读写位置起切断数据,参数size限定裁剪长度,默认为None
8、tell
s.tell() #返回当前读写位置
9、seek
s.seek(pos[,mode]):移动当前读写位置至pos处,可选参数mode为0时将读写位置移动到pos处,为1时将读写位置从当前位置移动pos个长度,为2时读写位置置于末尾处再向后移动pos个长度。默认为0
10、close
s.close():释放缓冲区,执行此函数后,数据将被释放,也不可再进行操作。
11、isatty
s.isatty():此函数总是返回0。不论StringIO对象是否已被close。
12、flush
s.flush():刷新缓冲区。
示例代码
from io import BytesIO,StringIO"""readreadlinereadlineswritewritelinegetvaluetruncatetellseekcloseisattyflush
"""strIO = StringIO()
#0位置
print(strIO.tell())
strIO.write("www")#3位置
print(strIO.tell())
#输出缓存内容
print(strIO.getvalue())
#移动到0位置
print(strIO.seek(0))
#读取全部内容
print(strIO.read())
#3位置
print(strIO.tell())
print("*"*10)#移动到0位置
strIO.seek(0)
print(strIO.tell())
#覆盖读写
strIO.write(".baidu")
print(strIO.getvalue())strIO.seek(1)
strIO.write(".com")
print(strIO.getvalue())#末尾插入
strIO.seek(0,2)
strIO.write("AB")
print(strIO.getvalue())
#首部插入
strIO.seek(0,0)
strIO.write("CD")
print(strIO.getvalue())
#首部向后偏移一位覆盖插入
strIO.seek(1,0)
strIO.write("P")
print(strIO.getvalue())#当前插入覆盖
strIO.seek(0,1)
strIO.write("EF")
print(strIO.getvalue())strIO.write("我的")
print(strIO.getvalue())
输出如下:
E:\python\python_sdk\python.exe E:/python/py_dev/python/bbs/safly.py
0
3
www
0
www
3
**********
0
.baidu
..comu
..comuAB
CDcomuAB
CPcomuAB
CPEFmuAB
CPEF我的ABProcess finished with exit code 0
strIO截取
from io import BytesIO,StringIOstrIO = StringIO()
strIO.write("abcdefgdsfdsfsdhij")
print(strIO.getvalue())#从开头截取,会截取缓存种的部分片段
strIO.truncate(10)
print(strIO.getvalue())#通过截取出来的10个字符,定位到第二个,然后截取2个
strIO.seek(2)
print(strIO.tell())
strIO.truncate()print(strIO.getvalue())
输出如下:
E:\python\python_sdk\python.exe E:/python/py_dev/python/bbs/safly.py
abcdefgdsfdsfsdhij
abcdefgdsf
2
abProcess finished with exit code 0
利用缓存写入文件
from io import BytesIO,StringIOstrIo = StringIO()strIo.write("我的StringIO")print(strIo.getvalue())with open("file.txt",mode="w",encoding="utf-8") as file_w:strIo.truncate(4)file_w.write(strIo.getvalue())
然后文件写入后的结果如下:
BytesIO
BytesIO跟StringIo方法差不多,不过BytesIO操作的数据类型为bytes
通过缓存,存入文件
from io import BytesIO,StringIObyIo = BytesIO()#参数类型为bytes
byIo.write("我的byio".encode("utf-8"))print(byIo.getvalue())print(byIo.getvalue().decode("utf-8"))#或者如下
print(byIo.getvalue().decode(encoding="utf-8"))
#或者如下
print(str(byIo.getvalue(),"utf8"))#字节类型的,其实也可以进行seek,只不过一个汉字代表3个光标位置,如果移动5个就报错
byIo.seek(6)
print(byIo.tell())
print(byIo.read().decode("utf-8"))#通过缓存写入文件
with open("file.txt",mode="wb") as file:file.write(byIo.getvalue())
我们看下写入文件的内容:
通过缓存,读取文件
readIo = BytesIO()
with open("file.txt",mode="rb") as file:ret =file.read()print(ret,type(ret))#写入BytesIO缓存readIo.write(ret)#从缓存种取出来print(readIo.getvalue().decode("utf-8"))
输出如下:
E:\python\python_sdk\python.exe E:/python/py_dev/python/bbs/safly.py
b'\xe6\x88\x91\xe7\x9a\x84byio' <class 'bytes'>
我的byioProcess finished with exit code 0
文件句柄赋值BytesIO
可以将文件句柄赋值为BytesIO
readIo = BytesIO()
with open("file.txt",mode="rb") as readIo:rt = readIo.read()print(rt.decode("utf-8"))#<_io.BufferedReader name='file.txt'>print(readIo)
输出如下:
我的byio
<_io.BufferedReader name='file.txt'>
python基础-BytesIO,StringIO相关推荐
- python基础(25):StringIO和BytesIO 序列化
StringIO和BytesIO - 廖雪峰的官方网站 (liaoxuefeng.com) 目录 StringIO BytesIO 小结 操作文件和目录 环境变量 操作文件和目录 小结 练习 序列化 ...
- python学习笔记 - StringIO以及BytesIO
之前我们所说的都是读写真正的文件.其实我们也可以在内存中虚拟一个文件进行读写.Python给咱们提供的官方module有io.StringIO和io.BytesIO. io.StringIO Stri ...
- Python学习:StringIO和BytesIO
1.StringIO 很多时候数据读取不一定是文件,也可以在内存中 StringIO顾名思义就是在内存中读写str 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写 ...
- python基础教程廖雪峰云-Python3基础教程-廖雪峰[带标签完整版]
标签: Python教程... 5 Python简介... 7 安装Python. 12 Python解释器... 16 第一个Python程序... 18 使用文本编辑器... 19 Python代 ...
- python基础个人总结
1.Python的可变与不可变 不可变类型:数字.字符.元组(一旦改变,变量所指向的地址发生变化)可变类型:列表.字典.集合(在地址块内部进行修改,变量指向的地址不发生变化) 2.装饰器: def f ...
- python基础:廖雪峰的官方网站Python(部分)笔记
文章目录 1. 数据类型和变量 2. 编码和输出 2.1 编码 2.2 格式化输出 3. 函数 3.1 函数 3.2 函数参数 4. 数据结构及算法 4.1 数据结构 4.2 列表生成式 4.3 生成 ...
- Python基础知识笔记
文章目录 Python基础知识 教程:https://www.liaoxuefeng.com/wiki/1016959663602400 内置函数:https://docs.python.org/3/ ...
- python基础(持续更新)
本文参考 廖雪峰Python教程 https://www.python-course.eu/python3_variables.php python基础教程 https://docs.python.o ...
- python 基础部分重点复习整理--从意识那天开始进阶--已结
pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...
最新文章
- Chapter12:动态内存
- 简单介绍Python中异常处理用法
- sqllite配置(参考别人)
- 进入正在运行的Docker容器的4种方式
- OpenCV进阶篇视频
- 项目版本控制器SVN的环境建立(Subversion,subclipse)
- javascript学习系列(11):数组中的findIndex方法
- linux 权限测试,linux下检测root权限的shell脚本
- 漫话:为什么计算机起始时间是1970年1月1日?
- 怎么做最棒的有效外链
- Eclipse for python环境搭建及创建python项目
- 智能优化算法:黄金正弦算法 -附代码
- 如何通过Azure Service Management REST API管理Azure服务
- 导出微信聊天记录生成词云
- Git报错Kex_exchange_identification
- 自学习策略和Lévy飞行的正弦余弦优化算法
- python开发要学哪些内容_Python开发工程师需要学习哪些内容?
- 线程池原理初探以及源码分析(详解)
- Titan数据库简介
- 海外英语杂志海外英语杂志社海外英语编辑部2022年第8期目录
热门文章
- 线性回归(Lasso,Ridge,ElasticNet)调参
- 2020年全球及中国自动化设备发展现状及市场竞争情况分析,本土企业加速布局,未来可期「图」
- 计算机基础实验4,计算机基础实验 3-4 实验报告
- 目标检测:YOLO V1、YOLO V2、YOLO V3 算法
- 命令行登录和退出MySQL
- 速览默默发展的Web3邮箱赛道
- 大暴雷,“山寨版拼多多”宣告破产!曾一年收割 1.3 亿用户,如今自救失败负债 16 亿...
- Mysql数据库引擎的区别
- 南大科院Java工程实训
- ReactiveX函数简要说明