تقنية

match في بايثون: لماذا يثير نمط النقطة خطأ؟

رفض نمط النقطة
تفسير توضيحي [1] [2]

match تميّز النمط غير الصالح من عدم التطابق هنا. [1] [2]

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

النقطة وحدها تترك نمطًا فارغًا بعد تطبيع المسار. [1] [2]

  • match(".") يثير ValueError هنا. [1] [2]
  • النقطة تنهار إلى نمط بلا مكونات. [1] [2]
  • النمط *.txt صالح لكنه يعطي False. [1] [2]
  • النمط *.dat يعطي True. [1] [2]
  • النمط PurePosixPath(".") يرفض أيضًا. [1] [2]
  • 3.12.14؛ case_sensitive=True؛ بلا ملفات. [1] [2]

المثال

from pathlib import PurePosixPath as P
p=P("canopy/bud.dat")
try:
 print(p.match(".",case_sensitive=True))
except ValueError:
 print("ValueError")
print(p.match("*.txt",case_sensitive=True))

[1] [2]

خطأ أم نتيجة؟

النتيجة: ValueError ثم False. الأول نمط بلا مكونات، والثاني نمط صالح لا يطابق الامتداد. [1] [2]

الفرق بين الخطأ وعدم التطابق
تفسير توضيحي [1] [2]

التطبيع والنطاق

PurePosixPath(".").parts تعطي ()؛ السلسلة الفارغة والنمط ./. يرفضان أيضًا. [1] [2]

اختبرنا PurePosixPath على CPython 3.12.14 بحساسية صريحة؛ بلا فتح ملفات أو تعميم على إصدارات أخرى. [1] [2]

المراجع

  1. Python 3.12: patterns and normalization
  2. CPython 3.12.14: empty-pattern rejection
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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