Pyhton文件操作之StringIO、BytesIO、file-like
SringIO
io模块中的类
from io import StringIO
内存中,开辟一个文本模式的buffer,可以向文件对象一样操作它
当close方法被调用时,这个buffer会被释放
getvalue()获取全部内容,跟文件指针没关系
from io import StringIO sio = StringIO() print(sio.seekable(),sio.writable(),sio.readable()) sio.write("alren\npython") sio.seek(0) print(sio.readlines()) print(sio.getvalue()) #和指针没关系,会把全部内容读取出来 sio.close() #输出 True True True ['alren\n', 'python'] alren python
StringIO优点:
一般来说,磁盘的操作比内存的操作要慢的多,内存足够的情况下,一般的优化思路是少落地,减少磁盘io的过程,可以大大的提升运行的效率
BytesIO
io模快中的类
from io import BytesIO
内存中开辟一个二进制模式的buffer,可以像文件一样操作它,当close方被调用时,这个buffer会被释放
from io import BytesIO bio = BytesIO() print(bio.seekable(),bio.writable(),bio.readable()) bio.write(b"alren\npython") bio.seek(0) print(bio.readlines()) print(bio.getvalue()) bio.close() #输出 True True True [b'alren\n', b'python'] b'alren\npython' #改造成with语法 from io import BytesIO bio = BytesIO() with bio: print(bio.seekable(),bio.writable(),bio.readable()) bio.write(b"alren\npython") bio.seek(0) print(bio.readlines()) print(bio.getvalue()) print(bio.closed) #输出 True True True [b'alren\n', b'python'] b'alren\npython' True
file-like对象
类文件对象,可以像文件一样操作
socket对象,输入输出对象(stdout/stdin)都是类文件对象
from sys import stdout f = stdout print(type(f)) f.write('alren.com') #屏幕输出 <class 'ipykernel.iostream.OutStream'> alren.com

浙公网安备 33010602011771号