Python之StringIO和BytesIO


StringIO

  • io模塊中的類  from io import StringIO
  • 內存中,開辟一個文本模式的buffer,可以像文件對象一樣操作它
  • 當close方法被調用的時候,這個buffer會被釋放
 
StringIO操作
getvalue() 獲取全部內容。根文件指針沒有關系
>>> from io import StringIO
>>> # 內存中構建
>>> sio = StringIO()  # 像文件對象一樣操作
>>> print(sio, sio.readable(), sio.writable(), sio.seekable())
<_io.StringIO object at 0x0000010B14ECE4C8> True True True
>>> sio.write("hello,world!")
12
>>> sio.seek(0)
0
>>> sio.readline()
'hello,world!'
>>> sio.getvalue()  # 無視指針,輸出全部內容
'hello,world!'
>>> sio.close()
優點
一般來說,磁盤的操作比內存的操作要慢得多,內存足夠的情況下,一般的優化思路是少落地,減少磁盤IO的過程,可以大大提高程序的運行效率
 
 

BytesIO

  • io模塊中的類  from io import BytesIO
  • 內存中,開辟一個二進制模式的buffer,可以像文件對象一樣操作它
  • 當close方法被調用的時候,這個buffer會被釋放
 
BytesIO操作
>>> from io import BytesIO
>>> # 內存中構建
>>> bio = BytesIO()
>>> print(bio, bio.readable(), bio.writable(), bio.seekable())
<_io.BytesIO object at 0x0000010B14ED7EB8> True True True
>>> bio.write(b"hello,world!)
12
>>> bio.seek(0)
0
>>> bio.readline()
b'hello,world!'
>>> bio.getvalue()  # 無視指針,輸出全部內容
b'hello,world!'
>>> bio.close()

 

file-like對象

類文件對象,可以像文件對象一樣操作
socket對象、輸入輸出對象(stdin、stdout)都是類文件對象
>>> from sys import stdout
>>> f = stdout
>>> print(type(f))
<class 'ipykernel.iostream.OutStream'>
>>> f.write("hello,world!")
hello,world!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM