سؤال

كيف أقوم بإنشاء كائن يشبه الملف (نفس نوع البطة مثل الملف) بمحتويات السلسلة؟

هل كانت مفيدة؟

المحلول

بالنسبة إلى Python 2.x، استخدم StringIO وحدة.على سبيل المثال:

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

أستخدم cStringIO (وهو أسرع)، لكن لاحظ أنه لا يفعل ذلك قبول سلاسل Unicode التي لا يمكن ترميزها كسلاسل ASCII عادية.(يمكنك التبديل إلى StringIO عن طريق تغيير "من cStringIO" إلى "من StringIO".)

بالنسبة لـ Python 3.x، استخدم io وحدة.

f = io.StringIO('foo')

نصائح أخرى

في بايثون 3.0:

import io

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

إجابتين جيدتين.أود أن أضيف خدعة صغيرة - إذا كنت بحاجة إلى كائن ملف حقيقي (تتوقع بعض الطرق واحدًا، وليس مجرد واجهة)، فإليك طريقة لإنشاء محول:

يعمل هذا مع Python2.7 وPython3.x:

io.StringIO(u'foo')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top