1

array.arrayオブジェクトからオブジェクトを作成したいcStringIO:

    import cStringIO, array

    s = """
    <several lines of text>
    """

    f = cStringIO.StringIO(s)
    a = array.array('c')
    a.fromfile(f, len(s))

しかし、次の例外が発生します。

Traceback (most recent call last):  
  File "./myfile.py", line 22, in <module>  
    a.fromfile(f, len(s))  
TypeError: arg1 must be open file

array.array()最初の引数の をチェックしているように見えるためtype()、互換性がありませんcStringIO(さらに言えばStringIO)。これを機能させる方法はありますか?

4

1 に答える 1

4

a.fromstring() を使用しないのはなぜですか? StringIO バッファは完全にメモリ内にあるため、あるメモリ ロケーションから別のメモリ ロケーションにビットを読み取るためにファイル API を使用しようとするメリットはありません。

a = array.array('c')
a.fromstring(s)

別の理由で StringIO を (メモリ バッファとして、または以前のファイルとして) 使用している場合は、StringIO の getvalue() 関数を使用して文字列値を取得できます。

于 2010-09-23T14:28:41.463 に答える