كيف يمكنك حذف ملف أو مجموعة ملفات برمجيًا؟ يمكنك القيام بذلك بمساعدة بايثون. في هذه المقالة، سنتناول كيفية حذف ملف أو مجموعة ملفات أو دليل باستخدام بايثون. لنبدأ – دون حذف المجلد الجذر!
ولكن أولاً، دعونا نجيب على سؤال أساسي:
لماذا نستخدم بايثون لحذف ملف؟
توفر لغة بايثون طريقة بسيطة وقوية ومستقلة عن المنصة لحذف الملفات برمجيًا. إذا كنت لا تعرف كيفية البرمجة بلغة بايثون، فأوصيك بإلقاء نظرة على مسار برمجة بايثون لبدء رحلتك.
قد يكون استخدام بايثون لحذف الملفات مفيدًا لعدة أسباب:
- التوافق بين الأنظمة الأساسية: يمكن تشغيل بايثون على أنظمة أساسية متعددة (Windows، Linux، MacOS، وما إلى ذلك)، ويمكن استخدام نفس الكود لحذف الملفات على أي من هذه الأنظمة الأساسية.
- سهولة التعلم: بايثون هي لغة برمجة صديقة للمبتدئين ذات بناء جملة بسيط نسبيًا، مما يجعل من السهل على المبرمجين الجدد تعلمها واستخدامها.
- مكتبات قوية: يحتوي بايثون على مكتبة ضخمة من الوحدات المعدة مسبقًا والتي يمكنها تبسيط عمليات الملفات، بما في ذلك حذف الملفات. يمكن لهذه الوحدات أن توفر لك الوقت والجهد من خلال توفير تجريدات عالية المستوى لعمليات الملفات المعقدة.
- معالجة الأخطاء: يوفر بايثون آليات معالجة أخطاء قوية يمكنها المساعدة في منع فقدان البيانات أو تلفها بسبب أخطاء حذف الملفات.
- البرمجة النصية: بايثون هي لغة برمجة نصية شائعة؛ حيث إن قدرتها على أتمتة مهام حذف الملفات يمكن أن تفيد مسؤولي النظام ومحللي البيانات الذين يحتاجون إلى تنفيذ مهام حذف الملفات الروتينية.
باختصار، يمكن أن يوفر استخدام بايثون لحذف الملفات الوقت والجهد مع ضمان التوافق بين الأنظمة الأساسية والتعامل القوي مع الأخطاء. بالإضافة إلى ذلك، فإن قدرات البرمجة النصية للغة تجعلها مناسبة تمامًا لأتمتة مهام حذف الملفات.
دعنا نكتب بعض التعليمات البرمجية التي يمكنك تخزينها كملف بايثون (.py
) وتشغيلها من الطرفية عندما تحتاج إلى حذف الملفات.
طريقتان لحذف ملف في بايثون
استخدام ()os.remove
بإمكانك حذف ملف باستخدام وحدة os في بايثون، والتي توفر دالة remove()
التي تقوم بحذف الملف المحدد.
كما ترى، الأمر بسيط للغاية. ما عليك سوى توفير مسار الملف كحجة للدالة:
>>> import os
>>> # path of the file to be deleted
>>> file_path = "/path_to_folder/example1.txt"
>>> # delete the file
>>> os.remove(file_path)
إذا لم يكن الملف المحدد موجودًا، فإن دالة remove()
تثير استثناء FileNotFoundError
. لذلك، فإن التحقق من وجود الملف قبل محاولة حذفه يعد ممارسة جيدة. يمكنك استخدام دالة os.path.exists()
للتحقق من وجود الملف. فيما يلي مثال:
>>> import os
>>> file_path = "/path_to_file"
>>> if os.path.exists(file_path):
... os.remove(file_path)
... else:
... print("File not found.")
استخدام ()os.unlink
تُعد دالة os.unlink()
طريقة أخرى لحذف ملف في بايثون. وهي مرادفة لدالة os.remove()
وتتصرف بشكل مشابه. فيما يلي مثال لكيفية استخدام هذه الدالة:
>>> import os
>>> # absolute path of the file to be deleted
>>> file_path = "/path_to_folder/example2.txt"
>>> # delete the file
>>> os.unlink(file_path)
مرة أخرى، من الجيد التحقق من وجود الملف قبل محاولة حذفه. يمكنك استخدام الدالة os.path.exists()
.
>>> import os file_path = "/path_to_file"
>>> if os.path.exists(file_path):
... os.unlink(file_path)
... else:
... print("File not found.")
لاحظ أن دالة os.unlink()
متاحة فقط في الأنظمة المستندة إلى Unix مثل Linux أو macOS؛ وقد لا تعمل في أنظمة Windows. في Windows، يمكنك استخدام os.remove()
بدلاً من ذلك.
كيفية حذف دليل في بايثون
في بايثون، يمكنك أيضًا حذف دليل باستخدام وحدة pathlib
، التي توفر طريقة موجهة للكائنات للتعامل مع مسارات نظام الملفات. فيما يلي بعض الأمثلة على حذف دليل في بايثون باستخدام pathlib
.
أولاً، دعنا نحذف الدليل الفارغ:
>>> import pathlib
>>> # create a Path object for the directory to be deleted
>>> dir_path = pathlib.Path("empty_dir")
>>> # delete the directory
>>> dir_path.rmdir()
في هذا المثال، يقوم التابع rmdir()
بحذف الدليل الفارغ المحدد بواسطة كائن dir_path
.
لحذف دليل غير فارغ، يمكنك استخدام المثال التالي.
>>> import shutil
>>> import pathlib
>>> # create a Path object for the directory to be deleted
>>> dir_path = pathlib.Path("/path_to_my_dir/")
>>> # delete the directory and its contents recursively
>>> shutil.rmtree(dir_path)
في هذا المثال، يتم استخدام الدالة rmtree()
من وحدة shutil
لحذف الدليل غير الفارغ المحدد بواسطة كائن dir_path
. تحذف الدالة rmtree()
الدليل وكل محتوياته بشكل متكرر.
لاحظ أن pathlib.Path.rmdir()
يمكنه فقط حذف الدلائل الفارغة. إذا كان الدليل يحتوي على ملفات أو دلائل أخرى، فستحتاج إلى استخدام shutil.rmtree()
لحذف الدليل ومحتوياته بشكل متكرر.
أيضًا، كن حذرًا عند استخدام shutil.rmtree()
، فهو يحذف جميع محتويات الدليل – بما في ذلك الملفات والدلائل الفرعية ومحتوياتها – ولا يمكن التراجع عنها.
حذف ملفات متعددة في بايثون
في بايثون، يمكنك حذف ملفات متعددة باستخدام طرق مختلفة. تعتمد الطريقة التي تختارها على حالة الاستخدام الخاصة بك. يمكننا استخدام حلقة لحذف الملفات بشكل متكرر:
>>> import os
>>> # directory containing the files to be deleted
>>> dir_path = "/path_to_directory"
>>> # list of file names to be deleted
>>> file_names = ["file1.txt", "file2.txt", "file3.txt"]
>>> # loop over each file name and delete the file
>>> for file_name in file_names:
. . . file_path = os.path.join(dir_path, file_name)
. . . os.remove(file_path)
في هذه الطريقة، يتم استخدام حلقة لتكرار كل اسم ملف في القائمة وحذف الملف باستخدام الدالة os.remove()
.
وبدلاً من ذلك، من الممكن أيضًا استخدام فهم القائمة لحذف الملفات لتحقيق نفس النتيجة.
يمكننا أيضًا استخدام وحدة glob
لحذف الملفات:
>>> import glob
>>> import os
>>> # directory containing the files to be deleted
>>> dir_path = "/path/to/directory"
>>> # pattern for file names to be deleted
>>> file_pattern = "*.txt"
>>> # get a list of file paths using the glob module
>>> file_paths = glob.glob(os.path.join(dir_path, file_pattern))
>>> # loop over each file path and delete the file
>>> for file_path in file_paths:
. . . os.remove(file_path)
في هذه الطريقة، يتم استخدام وحدة glob
للحصول على قائمة بمسارات الملفات التي تتطابق مع نمط محدد باستخدام الدالة glob.glob()
. ثم يتم تمرير قائمة مسارات الملفات إلى حلقة تحذف كل ملف باستخدام الدالة os.remove()
.
في كل هذه الطرق، من المهم التحقق من وجود الملف قبل محاولة حذفه.
استخدام pathlib للعمل مع الملفات
pathlib
هي وحدة في مكتبة بايثون القياسية توفر نهجًا موجهًا للكائنات للتعامل مع الملفات والدلائل. يمكن استخدام فئة Path
في pathlib
لحذف الملفات باستخدام التابع unlink()
. فيما يلي مثال:
>>> from pathlib import Path
>>> # path to the file to be deleted
>>> file_path = Path("/path_to_file.txt")
>>> # delete the file using the unlink() method
>>> file_path.unlink()
في هذا المثال، يتم استخدام فئة Path
لإنشاء كائن Path
يمثل الملف المراد حذفه. ثم يتم استدعاء التابع unlink()
على كائن Path
لحذف الملف. لاحظ أن التابع unlink()
سيثير خطأ FileNotFoundError
إذا لم يكن الملف موجودًا، لذا فمن الجيد التحقق مما إذا كان الملف موجودًا قبل محاولة حذفه.
لحذف ملفات متعددة باستخدام pathlib
، يمكنك استخدام حلقة أو فهم القائمة للتكرار عبر قائمة من كائنات Path
التي تمثل الملفات المراد حذفها. فيما يلي مثال باستخدام حلقة:
>>> from pathlib import Path
>>> # list of file paths to be deleted
>>> file_paths = [Path("/path/to/file1.txt"), Path("/path/to/file2.txt"), Path("/path/to/file3.txt")]
>>> # delete each file using a loop
>>> for file_path in file_paths:
... file_path.unlink()
في هذا المثال، يتم إنشاء قائمة من كائنات Path
التي تمثل الملفات التي يجب حذفها، ويتم استخدام حلقة للتكرار على كل مسار ملف وحذف الملف المقابل باستخدام التابع unlink()
.
تمامًا كما هو الحال مع دالة os.remove()
، فإن استخدام Path.unlink()
لحذف الملفات قد يؤدي إلى فقد البيانات. تأكد مرة أخرى من حذف الملفات الصحيحة قبل تشغيل الكود.
في هذه المقالة، تعلمنا طرقًا مختلفة لحذف الملفات والدلائل في بايثون باستخدام حزم بايثون الأساسية. لتعزيز معرفتك،
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.