Python の文字列/バイトバッファ

備忘録。

Python で IO 同様のインタフェースで扱えるインメモリバッファ(Ruby における StringIO)について。

Ruby では StringIO がその役割を担うが、Python の場合はテキストファイルとして扱うなら io.StringIO、バイナリファイルとして扱うなら io.BytesIO と役割が分かれている。

どちらも getvalue() でバッファ全体(str もしくは bytes)が取得できる。

import io

# 初期化時点ではストリームの先頭を読み書きする
strio = io.StringIO("abc")
strio.write("x")
strio.getvalue() # "xbc"

# BytesIOの初期化/書き込みは str ではなく bytes で行う
bio = io.BytesIO()
bio.write(b"x")
bio.getvalue() # b"xbc"