البرمجة

تمكين استخدام kwargs مع argparse في Python

في لغة البرمجة بايثون، يمكنك استخدام وسائل متعددة لتمكين استخدام kwargs (الوسيطات الاسمية) عند استدعاء البرنامج من سطر الأوامر، ومن بين هذه الوسائل هو استخدام مكتبة argparse. للقيام بذلك، يمكنك تعديل الكود ليدعم تمرير الوسائط الاسمية من خلال argparse. دعنا نرى كيف يمكن فعل ذلك.

أولاً، يجب عليك استيراد مكتبة argparse وتعريف المتغيرات اللازمة لتمثيل الوسائط التي تنتظرها الدالة:

python
import argparse def main(foo, bar, **kwargs): print('Called myscript with:') print('foo = %s' % foo) print('bar = %s' % bar) if kwargs: for k, v in kwargs.items(): print('keyword argument : %s = %s' % (k, v)) if __name__=="__main__": parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('foo', type=str, help='an integer for the foo') parser.add_argument('bar', type=str, help='an integer for the bar') args, unknown = parser.parse_known_args() main(args.foo, args.bar, **dict(arg.split('=') for arg in unknown))

هذا التغيير يعتمد على استخدام argparse لتحديد وتحليل الوسائط الممررة من سطر الأوامر. يتم تحديد معلومات الوسيطات المتوقعة مسبقًا في parser.add_argument()، حيث يحدد البرنامج ما إذا كانت الوسائط مطلوبة أو اختيارية، وما هو نوع البيانات المتوقعة، والمساعدات النصية المرتبطة بها.

ثم يتم تحليل الوسائط الممررة من خلال parser.parse_known_args()، حيث تمرر الوسائط المحددة إلى دالة main() بالإضافة إلى الوسائط الإضافية (kwargs) التي يتم تحليلها من المتغير unknown باستخدام تحويل نصي إلى قاموس (dictionary comprehension).

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

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

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

لفهم كيفية استخدام هذا النمط، دعنا نقدم مثالًا توضيحيًا:

فرضاً أن لديك برنامج يقوم بمعالجة بيانات نصية، وترغب في تمرير مسار الملف المدخل والملف المخرج كوسائط اسمية. يمكنك القيام بذلك عبر سطر الأوامر كالتالي:

bash
python myscript.py input.txt output.txt --delimiter=,

في هذا المثال، يتم تمرير “input.txt” و “output.txt” كمعاملات مطلوبة، بينما يتم تمرير “delimiter” كوسيط اختياري باستخدام الوسيطة “–” وقيمتها تعيين فاصلة “,”.

يمكنك بعد ذلك استخدام الوسائط الاسمية داخل الكود بطريقة مريحة كالتالي:

python
def main(input_file, output_file, **kwargs): delimiter = kwargs.get('delimiter', '\t') # تحديد قيمة الفاصلة افتراضيًا # الآن يمكنك استخدام input_file و output_file بشكل طبيعي في البرنامج # واستخدام delimiter لتحديد الفاصلة المستخدمة في معالجة البيانات النصية pass

بهذه الطريقة، يمكنك تعديل وتخصيص سلوك البرنامج بسهولة باستخدام وسائط اسمية عند استدعاءه من سطر الأوامر، مما يزيد من قدرتك على تنفيذ المهام المختلفة بكفاءة ومرونة.

مقالات ذات صلة

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

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر