cStringIO モジュールは StringIO モジュールと同様の インターフェースを提供しています。 StringIO.StringIO オブジェクトを酷使する場合、 このモジュールにある StringIO() 関数をかわりに使うと効果的です。
このモジュールは、ビルトイン型のオブジェクトを返すファクトリー関数を提供しているので、 サブクラス化して自分用の物を作ることはできません。 そうした場合には、オリジナルの StringIO モジュールを使ってください。
StringIO モジュールで実装されているメモリファイルとは異なり、 このモジュールで提供されているものは、プレイン ASCII 文字列にエンコードできない ユニコードを受け付けることができません。
また、引数に文字列を指定してStringIO()呼び出すと読み出し専用のオブジェクト が生成されますが、この場合 cStringIO.StringIO() では write()メソッドを持たない オブジェクトを生成します。 これらのオブジェクトは普段は見えません。 トレースバックに StringI と StringO として表示されます。
次にあげるデータオブジェクトも提供されています:
このモジュールには 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()