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

 

posted @ 2020-04-29 11:06  Alrenn  阅读(480)  评论(0)    收藏  举报