web-dev-qa-db-ja.com

Pythonでファイル内の文字列をラップするにはどうすればよいですか?

文字列の内容を使用してファイルのようなオブジェクト(Fileと同じアヒルタイプ)を作成するにはどうすればよいですか?

71
Daryl Spitzer

Python 2.xの場合、 StringIO モジュールを使用します。例:

>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'

私はcStringIOを使用しています(これは高速ですが) プレーンASCII文字列 =としてエンコードできないUnicode文字列を受け入れます)(StringIOに切り替えることができます) 「from cStringIO」を「from StringIO」に変更します。)

Python 3.xの場合、 io モジュールを使用します。

f = io.StringIO('foo')
100
Daryl Spitzer

In Python 3.0:

import io

with io.StringIO() as f:
    f.write('abcdef')
    print('gh', file=f)
    f.seek(0)
    print(f.read())
25
jfs

2つの良い答え。ちょっとしたトリックを追加します。実際のファイルオブジェクトが必要な場合(一部のメソッドでは、インターフェイスだけでなくオブジェクトが必要です)、ここにアダプターを作成する方法を示します。

3
e-satis

これは、Python2.7およびPython3.xで機能します。

io.StringIO(u'foo')
2
guettli