تقنية

poplib في بايثون: هل octets مجموع أحجام الرسائل؟

octets يعد سطري القائمة
رد مؤلف. [1] [2]

نفصل عد القائمة عن أحجام رسائلها المعلنة. [1] [2]

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

لا؛ الناتج هنا 12، لا 46. [1] [2]

  • سطرانا المؤلفان يعلنان الحجمين 17 و29. [1] [2]
  • تعيد list() الرد والقائمة والعد 12. [1] [2]
  • العد 6+6 يشمل CRLF؛ يستبعد الرد وسطر النقطة. [1] [2]
  • تجاوزنا منشئ الاتصال وإرسال الأمر في Demo؛ لا خادم. [1] [2]
  • اختبرنا 3.12.14؛ لا رسالة حقيقية أو تحقق لكل الخوادم. [1] [2]

المثال

import poplib
from io import BytesIO
class Demo(poplib.POP3):
 def __init__(self):
  self._debugging=0
  self.file=BytesIO(b"+OK\r\n1 17\r\n2 29\r\n.\r\n")
 def _putcmd(self,line): pass
d=Demo()
print(d.list())
d.file.close()

[1] [2]

ماذا نعد؟

العد هنا بايتات السطرين؛ ليس مجموع أحجامهما المعلنة. يطبع (b'+OK', [b'1 17', b'2 29'], 12). طول كل سطر مع CRLF هو 6؛ مجموع الحجمين المعلنين 46. [1] [2]

46 تختلف عن 12
الأحجام والعد. [1] [2]

الحدود

فئة اختبار بتفاصيل داخلية وBytesIO، لا إعداد عميل حقيقي. منشئ POP3 المعتاد يتصل؛ تجاوزناه وعطلنا إرسال الأمر. لا رسائل حقيقية أو مصادقة. [1] [2]

المراجع

  1. Python: poplib
  2. CPython3.12.14: poplib.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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