Python之io模块的使用
IO模块的作用
IO模块在解脱器的内置open()之上实现了一些类来完成基于文件的输入和输出操作。
1、字符串的内存缓冲区创建和写入数据的示例
import io # 创建一个字符串的内存缓冲区 output = io.StringIO() output.write('This goes into the buffer') # 打印到字符串内存缓冲区 print(' And so does this.', file=output) # 从字符串内存缓冲区中获取值 print(output.getvalue()) # 初始化内存缓冲区,并且写入数据 input = io.StringIO('Inital value for read buffer') print(input.read())
测试效果
This goes into the buffer And so does this. Inital value for read buffer
2、字节的内存缓冲区创建和写入数据的示例
import io # 创建一个字节的内存缓冲区 output = io.BytesIO() output.write('This goes into the buffer'.encode('utf-8')) output.write('ÁÇÊ'.encode('utf-8')) # 从字节内存缓冲区中获取值 print(output.getvalue()) output.close() # 初始化字节内存缓冲区,并且写入数据 input = io.BytesIO(b'Inital value for read buffer') print(input.read())
测试效果
b'This goes into the buffer\xc3\x81\xc3\x87\xc3\x8a' b'Inital value for read buffer'
3、给文本数据包装字节流的示例
import io # 在内存中创建字节缓冲区 output = io.BytesIO() # 创建一个包装类,自动将字符串编辑为字节类型 # write_through : True,禁用缓冲 wrapper = io.TextIOWrapper( output, encoding='utf-8', write_through=True ) # 往包装类,写入数据 wrapper.write('This goes into the buffer. ') wrapper.write('ÁÇÊ') # 获取缓冲区的数据 print(output.getvalue()) # 关闭缓冲区 output.close() input = io.BytesIO( b'Inital value for read buffer with unicode characters ' + 'ÁÇÊ'.encode('utf-8') ) wrapper = io.TextIOWrapper(input, encoding='utf-8') print(wrapper.read())
测试效果
b'This goes into the buffer. \xc3\x81\xc3\x87\xc3\x8a' Inital value for read buffer with unicode characters ÁÇÊ