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