stringIOとbytesIO

3641 ワード

stringIO


ioモジュール内のクラス、from io import StringIO
メモリでは、ファイルオブジェクトのように操作できるテキストモードのbufferが開きます.
closeメソッドが呼び出されると、このbufferは解放されます.
getvalue()はすべてのコンテンツを取得し、ファイルポインタとは関係ありません.
from io import StringIO
# 

sio = StringIO()# 
print(sio.readable(),sio.writable(),sio.seekable())
sio.write("xpca
xdd
") sio.seek(0) print(sio.readline()) print(sio.getvalue())# sio.close() : True True True xpca xpca xdd

メリット


一般的に、ディスクの操作はメモリの操作よりずっと遅くて、メモリが十分な情況の下で、一般的な最適化の構想は少なく着地して、ディスクIOの過程を減らして、大いにプログラムの運行効率を高めることができます.

bytesIO


ioモジュールのクラス.
from io import BytesIO
メモリは常に、ファイルオブジェクトのように操作できるバイナリモードのbufferを開きます.
closeメソッドが呼び出されると、このbufferは解放されます.
from io import BytesIO
# 

bio = BytesIO()# 
print(bio.readable(),bio.writable(),bio.seekable())
bio.write(b"xpca
xdd
") bio.seek(0) print(bio.readline()) print(bio.getvalue())# bio.close() : True True True b'xpca
' b'xpca
xdd
'

file-likeオブジェクト


クラスファイルオブジェクトは、ファイルオブジェクトのように操作できます.
socketオブジェクト、入出力オブジェクト(stdin、stdout)はクラスファイルオブジェクトです.
from sys import stdout
f = stdout
print(type(f))
f.write("xpc")

 :
<class '_io.TextIOWrapper'>
xpc