إنشاء المجلدات بسهولة في بايثون: mkdir مقابل makedirs

1. المقدمة

باستخدام بايثون، يمكنك بسهولة إدارة الملفات والمجلدات. على وجه الخصوص، إنشاء المجلدات هو أحد أكثر المهام شيوعًا لتنظيم الملفات، والنسخ الاحتياطي، وإنشاءها تلقائيًا. يقدم هذا الدليل شرحًا مفصلاً لكيفية إنشاء المجلدات باستخدام وحدة os ووحدة pathlib. كما يغطي إنشاء المجلدات المتداخلة ومعالجة الأخطاء، بهدف أن يكون واضحًا للمبتدئين في بايثون.

2. إنشاء المجلدات باستخدام os.mkdir()

الاستخدام الأساسي

os.mkdir() هي الطريقة الأساسية لإنشاء مجلد واحد في المسار المحدد. ومع ذلك، لهذه الدالة حدٌّ: تُثير خطأ إذا لم يكن المجلد الأب موجودًا. على سبيل المثال، يوضح الكود التالي طريقة بسيطة لإنشاء مجلد.

import os

# Specify the path of the directory to create
dir_path = './new_directory'

# Create the directory
os.mkdir(dir_path)

بهذا الكود، يتم إنشاء مجلد في المسار المحدد، ولكن إذا كان هناك مجلد بنفس الاسم موجودًا بالفعل، يحدث FileExistsError. هذه نقطة يجب الانتباه إليها في os.mkdir().

معالجة الأخطاء

يمكنك منع الأخطاء عن طريق التحقق مما إذا كان المجلد موجودًا بالفعل قبل إنشائه. الكود التالي مثال على ذلك.

import os

# Specify the path of the directory to create
dir_path = './new_directory'

# Check whether the directory exists
if not os.path.exists(dir_path):
    os.mkdir(dir_path)
else:
    print(f"The directory '{dir_path}' already exists.")

باستخدام هذه الطريقة، يمكنك تجنب الأخطاء التي تحدث عندما تحاول إنشاء مجلد موجود عن طريق الخطأ.

3. إنشاء المجلدات المتداخلة باستخدام os.makedirs()

إنشاء المجلدات المتداخلة

os.makedirs() يمكن اعتبارها مجموعة شاملة لـ os.mkdir(). لأنها تستطيع إنشاء مستويات متعددة من المجلدات مرة واحدة، يمكنها إنشاء المجلدات الوسيطة حتى عندما لا يكون المجلد الأب موجودًا.

import os

# Path including intermediate directories
dir_path = './parent_directory/sub_directory'

# Create directories recursively
os.makedirs(dir_path)

في هذا المثال، يتم إنشاء parent_directory و sub_directory معًا. حقيقة أن جميع المجلدات يمكن إنشاؤها دون خطأ حتى عندما لا تكون المجلدات الوسيطة موجودة تُظهر مدى سهولة استخدامها.

معالجة الأخطاء باستخدام exist_ok=True

تحتوي os.makedirs() على خيار exist_ok، مما يسمح للعملية بالاستمرار دون رفع خطأ حتى إذا كان المجلد موجودًا بالفعل.

import os

dir_path = './parent_directory/sub_directory'

# Do not raise an error even if the directory already exists
os.makedirs(dir_path, exist_ok=True)

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

4. إنشاء المجلدات باستخدام وحدة pathlib

إنشاء المجلدات باستخدام كائنات Path

وحدة pathlib هي وحدة مريحة لأداء عمليات مسارات نظام الملفات وتتوفر في بايثون 3.4 وما بعده. كائنات Path() تحسن قابلية قراءة الكود.

from pathlib import Path

# Specify the directory path
dir_path = Path('./new_directory')

# Create the directory
dir_path.mkdir()

ميزة pathlib هي أنها تسمح بالتعامل مع المسارات بطريقة كائنية، مما يعزز بديهية الكود.

إنشاء المجلدات المتداخلة ومعالجة الأخطاء

حتى عند استخدام pathlib لإنشاء المجلدات المتداخلة، يمكن تحقيق ذلك بسهولة ببساطة عن طريق تحديد خيار.

from pathlib import Path

# Path including intermediate directories
dir_path = Path('./parent_directory/sub_directory')

# Create including intermediate directories
dir_path.mkdir(parents=True, exist_ok=True)

في هذا الكود، يتم إنشاء مستويات متعددة من المجلدات، بما في ذلك الوسيطة، مرة واحدة، ولا يحدث خطأ إذا كانت المجلدات موجودة بالفعل.

年収訴求

5. التحقق من وجود المجلد ومعالجة الأخطاء

التحقق مما إذا كان الدليل موجودًا بالفعل هو جزء أساسي من معالجة الأخطاء. وحدة os و pathlib للتحقق من وجود الدليل وإجراء عمليات الدليل بأمان.

طريقة الفحص باستخدام وحدة os

import os

dir_path = './new_directory'

if os.path.exists(dir_path):
    print(f"Directory '{dir_path}' already exists.")
else:
    print(f"Directory '{dir_path}' does not exist.")

طريقة الفحص باستخدام pathlib

from pathlib import Path

dir_path = Path('./new_directory')

if dir_path.exists():
    print(f"Directory '{dir_path}' already exists.")
else:
    print(f"Directory '{dir_path}' does not exist.")

6. الملخص

في هذه المقالة، قدمنا شرحًا مفصلاً لطرق مختلفة لإنشاء الأدلة باستخدام بايثون. تعلمت الفرق بين os.mkdir() و os.makedirs()، بما في ذلك كيفية التعامل مع إنشاء الأدلة المتداخلة ومعالجة الأخطاء. علاوة على ذلك، اكتشفت أنه باستخدام pathlib، وهي وحدة معيارية أحدث في بايثون، يمكنني كتابة كود أبسط وأكثر قابلية للقراءة.

اختر الطريقة التي تناسب حالتك واستخدم عمليات الأدلة بكفاءة.