• 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相关推荐

  1. python基础(25):StringIO和BytesIO 序列化

    StringIO和BytesIO - 廖雪峰的官方网站 (liaoxuefeng.com) 目录 StringIO BytesIO 小结 操作文件和目录 环境变量 操作文件和目录 小结 练习 序列化 ...

  2. python学习笔记 - StringIO以及BytesIO

    之前我们所说的都是读写真正的文件.其实我们也可以在内存中虚拟一个文件进行读写.Python给咱们提供的官方module有io.StringIO和io.BytesIO. io.StringIO Stri ...

  3. Python学习:StringIO和BytesIO

    1.StringIO 很多时候数据读取不一定是文件,也可以在内存中 StringIO顾名思义就是在内存中读写str 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写 ...

  4. python基础教程廖雪峰云-Python3基础教程-廖雪峰[带标签完整版]

    标签: Python教程... 5 Python简介... 7 安装Python. 12 Python解释器... 16 第一个Python程序... 18 使用文本编辑器... 19 Python代 ...

  5. python基础个人总结

    1.Python的可变与不可变 不可变类型:数字.字符.元组(一旦改变,变量所指向的地址发生变化)可变类型:列表.字典.集合(在地址块内部进行修改,变量指向的地址不发生变化) 2.装饰器: def f ...

  6. python基础:廖雪峰的官方网站Python(部分)笔记

    文章目录 1. 数据类型和变量 2. 编码和输出 2.1 编码 2.2 格式化输出 3. 函数 3.1 函数 3.2 函数参数 4. 数据结构及算法 4.1 数据结构 4.2 列表生成式 4.3 生成 ...

  7. Python基础知识笔记

    文章目录 Python基础知识 教程:https://www.liaoxuefeng.com/wiki/1016959663602400 内置函数:https://docs.python.org/3/ ...

  8. python基础(持续更新)

    本文参考 廖雪峰Python教程 https://www.python-course.eu/python3_variables.php python基础教程 https://docs.python.o ...

  9. python 基础部分重点复习整理--从意识那天开始进阶--已结

    pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...

最新文章

  1. Chapter12:动态内存
  2. 简单介绍Python中异常处理用法
  3. sqllite配置(参考别人)
  4. 进入正在运行的Docker容器的4种方式
  5. OpenCV进阶篇视频
  6. 项目版本控制器SVN的环境建立(Subversion,subclipse)
  7. javascript学习系列(11):数组中的findIndex方法
  8. linux 权限测试,linux下检测root权限的shell脚本
  9. 漫话:为什么计算机起始时间是1970年1月1日?
  10. 怎么做最棒的有效外链
  11. Eclipse for python环境搭建及创建python项目
  12. 智能优化算法:黄金正弦算法 -附代码
  13. 如何通过Azure Service Management REST API管理Azure服务
  14. 导出微信聊天记录生成词云
  15. Git报错Kex_exchange_identification
  16. 自学习策略和Lévy飞行的正弦余弦优化算法
  17. python开发要学哪些内容_Python开发工程师需要学习哪些内容?
  18. 线程池原理初探以及源码分析(详解)
  19. Titan数据库简介
  20. 海外英语杂志海外英语杂志社海外英语编辑部2022年第8期目录

热门文章

  1. 线性回归(Lasso,Ridge,ElasticNet)调参
  2. 2020年全球及中国自动化设备发展现状及市场竞争情况分析,本土企业加速布局,未来可期「图」
  3. 计算机基础实验4,计算机基础实验 3-4 实验报告
  4. 目标检测:YOLO V1、YOLO V2、YOLO V3 算法
  5. 命令行登录和退出MySQL
  6. 速览默默发展的Web3邮箱赛道
  7. 大暴雷,“山寨版拼多多”宣告破产!曾一年收割 1.3 亿用户,如今自救失败负债 16 亿...
  8. Mysql数据库引擎的区别
  9. 南大科院Java工程实训
  10. ReactiveX函数简要说明