تقنية

copyfile في بايثون: هل المحتوى المتطابق يعني الملف نفسه؟

ملفان مستقلان يحملان المحتوى نفسه
أنشأنا الملفين منفصلين قبل النسخ. [1] [2]

تساوي المحتوى لا يجعل الملفين ملفًا واحدًا. [1] [2]

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

ترفض copyfile المصدر والوجهة عندما يشيران إلى الملف نفسه. [1] [2]

  • ننشئ ملفين مستقلين a وb، بمحتوى x. [1] [2]
  • نسخ a إلى b ينجح رغم تساوي المحتوى. [1] [2]
  • الدالة تعيد الوجهة؛ المقارنة بـb تعيد True. [1] [2]
  • نسخ a إلى نفسه يرفع SameFileError. [1] [2]
  • اختبرنا 3.12.14 بملفات مؤقتة أنشأناها. [1] [2]

المثال

import shutil as s
import tempfile as t
from pathlib import Path
with t.TemporaryDirectory() as d:
 a=Path(d)/'a';b=Path(d)/'b'
 a.write_text('x')
 b.write_text('x')
 print(s.copyfile(a,b)==b)
 try:s.copyfile(a,a)
 except s.SameFileError:
  print('SameFileError')

[1] [2]

المخرجات: True ثم SameFileError. [1] [2]

ماذا يقارن التنفيذ؟

يفحص هوية الملف قبل فتحه للنسخ؛ ليس اختبار تساوي محتوياته. [1] [2]

عند توجيه النسخ إلى a نفسه، يُرفض الطلب؛ بقي محتواه x في تجربتنا. [1] [2]

النسخ إلى الملف الآخر ينجح وإلى نفسه يرفض
المحتوى متطابق؛ الوجهة مختلفة أو الملف نفسه. [1] [2]

النطاق

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

المراجع

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

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