تقنية

StringIO في بايثون: النص الكامل لا يعيد مؤشر القراءة

استرجاع النص الكامل يترك المؤشر بعد الحرف الأول
ثلاث خطوات بالترتيب. [1] [2]

افصل النص عن الموضع. [1] [2]

الخلاصة السريعة

getvalue() يعيد النص الكامل دون تحريك المؤشر؛ read() يقرأ من موضعه. [1] [2]

  • read(1) يعيد w ويضع المؤشر عند 1. [1] [2]
  • getvalue() يعيد wave؛ tell() يبقى 1. [1] [2]
  • القراءة التالية تعيد ave، لا wave. [1] [2]
  • عند النهاية، read() فارغ لكن getvalue() يظل wave. [1] [2]
  • اختبرنا تيارًا مفتوحًا في 3.12.14؛ دون ترجمة نهايات أسطر أو ملفات خارجية. [1] [2]

المثال

from io import StringIO
s=StringIO('wave')
print(s.read(1))
print(s.getvalue(),s.tell())
print(s.read())
print(repr(s.read()))
print(s.getvalue())

[1] [2]

المخرجات: w، wave 1، ave، ''، wave. [1] [2]

الموضع

استرجاع النص الكامل لا يعيد بداية التيار؛ القراءة تستأنف بعد الحرف الأول. [1] [2]

النهاية

نهاية القراءة ليست محوًا للمخزن؛ في مثالنا لم نغيّر النص أو نغلق التيار. [1] [2]

عند النهاية قراءة فارغة ونص كامل باق
المخزن باقٍ عند نهاية القراءة. [1] [2]

النطاق

نراقب الموضع في ذاكرة النص؛ لا نعممه إزاحة بايتات لملف مشفّر. [1] [2]

المراجع

  1. Python: تيار النص في الذاكرة
  2. CPython 3.12.14: StringIO
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.