Pythonでファイル内の文字列をラップするにはどうすればよいですか?
質問
文字列の内容を使用してファイルのようなオブジェクト(Fileと同じアヒルタイプ)を作成するにはどうすればよいですか?
解決
Python 2.xの場合、 StringIO モジュールを使用します。例:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
cStringIOを使用します(これは高速です)が、 Unicodeを受け入れないことに注意してください。プレーンASCII文字列としてエンコードできない文字列。 (" from cStringIO"を" from StringIO"に変更することで、StringIOに切り替えることができます。)
Python 3.xの場合、 io を使用しますcode>
モジュール。
f = io.StringIO('foo')
他のヒント
Python 3.0の場合:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
2つの良い答え。ちょっとしたトリックを追加します—実際のファイルオブジェクトが必要な場合(一部のメソッドは、単なるインターフェイスではなく1つを必要とします)、アダプタを作成する方法を次に示します。
これはPython2.7とPython3.xで機能します:
io.StringIO(u'foo')
所属していません StackOverflow