python学习----io模块

简介

io模块用于处理不同类型的i/o,主要的i/o类型:text I/O,binary I/O,raw I/O

StringIO

简介:An in-memory stream for text I/O. 它将创建一个文件对象接口和内存字符串相映射。相当于一个缓存。

用法:write、read、readline、readlines、getvalue

  • write方法可以在字符串中保存写入的文本,但是写入的文本不能被read;若最初写入的文本未被读取,则write入的文本将从未被读取的地方开始覆盖原文本。
  • read / readline /readlines 读取原始文本,这种方法具有记忆,会从上次读取的地方接着读取,即使这几种方法交叉使用,记忆仍然保持
    eg:
    test1:write方法可以在字符串中保存写入的文本,但是写入的文本不能被read
>>> from io import StringIO
>>> test1=StringIO() # 初始化时未输入文本
>>> test1.getvalue() #此时,值为空
''
>>> test1.write('hallo\n') #写入本文,返回字符串长度
6
>>> test1.getvalue() # write的值可以被getvalue
'hallo\n'
>>> test1.readline() #但write的值无法被read
''
>>> test1.read()
''
>>>

test2:若最初写入的文本未被读取,则write入的文本将从未被读取的地方开始覆盖原文本。

>>> from io import StringIO
>>> test2=StringIO('nice to meet you\nme too\n') # 原始文本
>>> test2.getvalue() 
'nice to meet you\nme too\n'
>>> test2.readline() # 按行读取
'nice to meet you\n'
>>> test2.write('do i\n')
5
>>> test2.getvalue() #此时,会发现,write入的值将从未被读取的地方开始覆盖原文本
'nice to meet you\ndo i\no\n'
>>> test2.readline() #覆盖掉的原文本不存在了,read时,只会从未被覆盖的地方开始读
'o\n'
>>> test2.readline()
''
>>>

test3&4&5:read方法一次性读取全部文本,可以指定读取的文本长度,readline按行读取,readlines将文本按行分割,存在一个列表中

# test 3
>>> from io import StringIO
>>> test3=StringIO('nice to meet you\nme too\n')
>>> test3.read() #一次性读取全部文本
'nice to meet you\nme too\n'
>>> test3.read()
''
#test 4
>>> from io import StringIO
>>> test4=StringIO('nice to meet you\nme too\n')
>>> test4.read(3) #指定读取的文本长度
'nic'
>>> test4.read(4)
'e to'
>>> test4.read(6)
' meet '
>>> test4.read(6)
'you\nme'
>>> test4.readline()  # 记忆仍然保持
' too\n'
>>>
# test 5
>>> from io import StringIO
>>> test5=StringIO('nice to meet you\nme too\n')
>>> test5.readlines() #一次性读取全部文本,并按行分割,将其保存在一个列表里
['nice to meet you\n', 'me too\n']
>>> test5.readline()
''
>>>

实际用途:重定向时使用,切换输出流
eg:
法一:重定向流

>>> from io import StringIO
>>> import sys
>>> buff=StringIO()
>>> temp=sys.stdout # 将当前的输出流暂存在temp中
>>> sys.stdout=buff  # 将输出导入到buff,即重定向输出流
>>> print('mine',3.14) # 此时,console中不会显示print的值,而是被保存在了buff中
>>> sys.stdout=temp # 将输出流重新导入到原先状态
>>> buff.getvalue()
'mine 3.14\n'
>>>

法二:利用文件接口

>>> from io import StringIO
>>> buff=StringIO()
>>> print('mine',520,file=buff) # 利用参数,将输出导入文件缓存接口
>>> buff.getvalue()
'mine 520\n'
>>> print(13)
13
>>>

ByteIO

简介 :和StringIO类似,不过ByteIO将文件操作映射到内存字节缓冲区,可以用来处理二进制脚本

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值