4.6 cStringIO -- 高速化された StringIO

cStringIO モジュールは StringIO モジュールと同様の インターフェースを提供しています。 StringIO.StringIO オブジェクトを酷使する場合、 このモジュールにある StringIO() 関数をかわりに使うと効果的です。

このモジュールは、ビルトイン型のオブジェクトを返すファクトリー関数を提供しているので、 サブクラス化して自分用の物を作ることはできません。 そうした場合には、オリジナルの StringIO モジュールを使ってください。

StringIO モジュールで実装されているメモリファイルとは異なり、 このモジュールで提供されているものは、プレイン ASCII 文字列にエンコードできない ユニコードを受け付けることができません。

また、引数に文字列を指定してStringIO()呼び出すと読み出し専用のオブジェクト が生成されますが、この場合 cStringIO.StringIO() では write()メソッドを持たない オブジェクトを生成します。 これらのオブジェクトは普段は見えません。 トレースバックに StringIStringO として表示されます。

次にあげるデータオブジェクトも提供されています:

InputType
文字列をパラメーターに渡して StringIO を呼んだときに作られるオブジェクトの オブジェクト型。

OutputType
パラメーターを渡さすに StringIO を呼んだときに返されるオブジェクトの オブジェクト型。

このモジュールには C API もあります。詳しくはこのモジュールのソースを参照してください。

使用例:

import cStringIO

output = cStringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.'

# ファイルの内容を取り出す -- ここでは
# 'First line.\nSecond line.\n'
contents = output.getvalue()

# オブジェクトを閉じてメモリバッファを解放する --
# 以降 .getvalue() は例外を送出するようになる。
output.close()
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。