Bir dizenin içeriğiyle nasıl dosya benzeri bir nesne (File ile aynı ördek türü) oluşturabilirim?
Bir dizenin içeriğiyle nasıl dosya benzeri bir nesne (File ile aynı ördek türü) oluşturabilirim?
Yanıtlar:
Python 2.x için, StringIO modülünü kullanın . Örneğin:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
CStringIO (daha hızlı) kullanıyorum, ancak düz ASCII dizeleri olarak kodlanamayan Unicode dizelerini kabul etmediğini unutmayın . ("CStringIO" dan "StringIO" ya değiştirerek StringIO'ya geçebilirsiniz.)
Python 3.x için io
modülü kullanın .
f = io.StringIO('foo')
io.StringIO(u'foo')
Bunu kullanacağım
Dosya benzeri nesnenizin bayt içermesi bekleniyorsa, dize önce bayt olarak kodlanmalı ve ardından bunun yerine bir BytesIO nesnesi kullanılabilir. Python 3'te:
from io import BytesIO
string_repr_of_file = 'header\n byline\n body\n body\n end'
function_that_expects_bytes(BytesIO(bytes(string_repr_of_file,encoding='utf-8')))
İki iyi cevap. Küçük bir numara eklerim - gerçek bir dosya nesnesine ihtiyacınız varsa (bazı yöntemler bir tane gerektirir, sadece bir arayüz değil), işte bir adaptör oluşturmanın bir yolu: