البرمجة

تقسيم الخيارات باستخدام argparse في Python

عند استخدام وحدة argparse في Python لتحليل السطر الأمر الذي يتم تمريره من سطر الأوامر، يمكنك تنظيم الخيارات الخاصة بك في مجموعات باستخدام add_argument_group(). ولكي تحصل على كائنات الـ Namespace المختلفة لكل مجموعة، يمكنك تقسيم التحليل إلى عمليات متعددة.

أولاً، يجب عليك تحليل السطر الأمر باستخدام parse_args() مرة واحدة فقط. بعد ذلك، يمكنك الوصول إلى الخيارات المحددة لكل مجموعة من خلال الكائن الرئيسي args.

اليك كيفية القيام بذلك:

python
import argparse # تعريف وحدة argparse cmdParser = argparse.ArgumentParser() cmdParser.add_argument('mainArg') # إضافة مجموعة الخيارات الأولى groupOne = cmdParser.add_argument_group('group one') groupOne.add_argument('-optA') groupOne.add_argument('-optB') # إضافة مجموعة الخيارات الثانية groupTwo = cmdParser.add_argument_group('group two') groupTwo.add_argument('-optC') groupTwo.add_argument('-optD') # تحليل السطر الأمر args = cmdParser.parse_args() # الوصول إلى الخيارات الرئيسية main_args = args.mainArg # الوصول إلى الخيارات في مجموعة الخيارات الأولى groupOne_args = argparse.Namespace() for action in groupOne._group_actions: arg = getattr(args, action.dest, None) setattr(groupOne_args, action.dest, arg) # الوصول إلى الخيارات في مجموعة الخيارات الثانية groupTwo_args = argparse.Namespace() for action in groupTwo._group_actions: arg = getattr(args, action.dest, None) setattr(groupTwo_args, action.dest, arg) # الوصول إلى الخيارات العامة (غير متعلقة بأي مجموعة) global_args = argparse.Namespace() for action in cmdParser._actions: if action not in (groupOne._group_actions + groupTwo._group_actions): arg = getattr(args, action.dest, None) setattr(global_args, action.dest, arg) # طباعة النتائج print("Main Args:", main_args) print("Group One Args:", groupOne_args) print("Group Two Args:", groupTwo_args) print("Global Args:", global_args)

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

المزيد من المعلومات

بالطبع، سأقدم المزيد من المعلومات حول كيفية تحليل السطر الأمر باستخدام وحدة argparse في Python والحصول على كائنات Namespace لكل مجموعة منفصلة.

وحدة argparse توفر طريقة مرنة وقوية لتحليل السطر الأمر في برامج Python. تسمح لك بتحديد الخيارات والمعلمات التي يمكن تمريرها عبر سطر الأوامر وتنظيمها بشكل مناسب. تعتبر الإضافة الأكثر استخدامًا لتنظيم الخيارات هي add_argument_group() التي تسمح لك بتجميع الخيارات ذات الصلة معًا في مجموعات.

في المثال السابق، بدأنا بتحديد وحدة argparse cmdParser وإضافة الخيارات الرئيسية باستخدام add_argument()، ثم قمنا بإنشاء مجموعتين باستخدام add_argument_group() وإضافة الخيارات الخاصة بهما.

عند استخدام parse_args()، يتم تحليل السطر الأمر وتخزين النتائج في كائن Namespace يُعرف عادة باسم args. ومن هنا، يمكن الوصول إلى قيم الخيارات المحددة باستخدام args.attribute.

للحصول على الخيارات في كل مجموعة، يمكن استخدام _group_actions التي تحتوي على قائمة بجميع الإجراءات المرتبطة بالمجموعة. ثم يمكن استخدام دورة for للوصول إلى كل إجراء والحصول على قيمه باستخدام getattr() وتعيينها في كائن Namespace جديد.

يجب أن تلاحظ أننا استخدمنا _group_actions و _actions، وهي متغيرات داخلية للوحدة argparse، والتي يجب استخدامها بحذر وفقًا للوثائق الرسمية للوحدة.

زر الذهاب إلى الأعلى