تقنية

dbm في بايثون: لماذا تعود القيمة بايتات بعد إدخال نص؟

المفتاح والقيمة من نصوص إلى بايتات
حذفنا اقتباسي المدخل النصي في الرسم. [1] [2]

نوع المدخل لا يكفي لتوقع نوع القراءة. [1] [2]

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

تخزن dbm المفاتيح والقيم بايتات؛ النصوص تتحول عند التخزين. [1] [2]

  • نسند النص b للمفتاح النصي a. [1] [2]
  • القراءة بالمفتاح b'a' تعيد b'b'. [1] [2]
  • مفتاح keys هنا نوعه bytes. [1] [2]
  • استخدمنا c لإنشاء المخزن عند غيابه. [1] [2]
  • اختبرنا 3.12.14؛ التنفيذ المختار dbm.dumb. [1] [2]

المثال

import dbm,tempfile as t
with t.TemporaryDirectory() as d:
 with dbm.open(d+'/x','c') as db:
  db['a']='b'
  print(db[b'a'])
  keys=db.keys()
  print(type(keys[0]).__name__)

[1] [2]

المخرجات: b'b' ثم bytes. [1] [2]

أي تمثيل عاد؟

التنفيذ الذي اختبرناه يحول النصوص بـUTF-8؛ قراءة القيمة تعيد بايتات. [1] [2]

عند القراءة لا تعني بادئة b أنها جزء من النص المخزن؛ إنها عرض نوع البايتات. [1] [2]

القراءة وقائمة المفاتيح تعرضان بايتات
في المثال مفتاح واحد؛ لا نعرض ترتيبًا عامًا. [1] [2]

النطاق

في المثال مفتاح واحد. استخدمنا مخزنًا مؤقتًا وwith لإغلاقه؛ لا نختبر التزامن. [1] [2]

المراجع

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

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