كيف أقوم بلف سلسلة في ملف في بايثون؟
سؤال
كيف أقوم بإنشاء كائن يشبه الملف (نفس نوع البطة مثل الملف) بمحتويات السلسلة؟
المحلول
بالنسبة إلى 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')
لا تنتمي إلى StackOverflow