تقنية

filecmp في بايثون: هل True الافتراضية تثبت تطابق البايتات؟

التوقيع متساوٍ والنتيجتان True ثم False
توقيع متساوٍ. [1] [2]

نفحص filecmp.cmp لملفين مؤلفين. [1] [2]

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

لا؛ المحتوى مختلف في مثالنا. [1] [2]

  • كتبنا X وY في ملفين. [1] [2]
  • النوع والحجم ووقت التعديل متساوية. [1] [2]
  • المقارنة الافتراضية تعيد True. [1] [2]
  • مع shallow=False تعيد False. [1] [2]
  • اختبرنا 3.12.14 بملفات ثابتة أثناء الفحص. [1] [2]
  • لم نفحص تعديلًا يبقي التوقيع. [1] [2]

المثال

import filecmp as f,os
from tempfile import TemporaryDirectory
from pathlib import Path
with TemporaryDirectory() as d:
 a=Path(d)/'a';b=Path(d)/'b'
 a.write_bytes(b'X')
 b.write_bytes(b'Y')
 for p in (a,b):os.utime(p,(1,1))
 print(f.cmp(a,b))
 print(f.cmp(a,b,shallow=False))

[1] [2]

المخرجان True ثم False. [1] [2]

التوقيع

المقارنة السطحية تقبل توقيع البيانات الوصفية المتطابق. لا تقرأ البايتات عند هذا الشرط في التنفيذ الذي راجعناه. [1] [2]

محتوى الملفين X وY مختلف
محتوى مختلف. [1] [2]

النطاق

نحصر النتيجة في ملفاتنا الثابتة؛ للدالة ذاكرة مقارنة، ولم نفحص تعديلًا يبقي التوقيع نفسه. [1] [2]

المراجع

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

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