كيفية إضافة وسيطات سطر الأوامر إلى نص بايثون

How Add Command Line Arguments Python Script



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

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







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



مثال 1: إنشاء وسيطة مساعدة ورسالة

ضع في اعتبارك نموذج الشفرة أدناه:



يستوردجدل

محلل =جدل.حجة محلل(وصف='برنامج اختبار'.)

أرجس= محلل.parse_args()

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





بافتراض أنك قمت بحفظ نموذج الشفرة المذكور أعلاه في ملف يسمى test.py ، فإن تشغيل الأوامر أدناه سيوفر لك رسائل المساعدة المتعلقة بالبرنامج.

دولار /اختبار.السنة التحضيرية

دولار /اختبار.السنة التحضيرية-يساعد

يجب أن تحصل على بعض المخرجات المشابهة لهذا:



الاستخدام: test.py [-h]


برنامج اختبار.


الحجج الاختيارية:

-h ، - ساعد في إظهار رسالة المساعدة هذه والخروج

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

مثال 2: التعامل مع وسيطة سلسلة

لإضافة وسيطات مقبولة بواسطة نص Python الخاص بك ، تحتاج إلى استخدام التابع add_argument. ألق نظرة على الكود التالي:

يستوردجدل

محلل =جدل.حجة محلل(وصف='برنامج اختبار'.)

محلل.add_argument('print_string'و يساعد='طباعة الوسيطة المتوفرة.')

أرجس= محلل.parse_args()

مطبعة(أرجس.print_string)

تمت إضافة بيان جديد يوضح استخدام طريقة add_argument. سيتم التعامل مع أي وسيطة تمت إضافتها عند تشغيل البرنامج النصي ككائن print_string بواسطة ArgumentParser.

لاحظ أنه افتراضيًا ، يتعامل أسلوب add_argument مع القيم المستردة من الوسيطات كسلاسل ، لذلك لا يتعين عليك تحديد النوع صراحةً في هذه الحالة. يتم أيضًا تعيين القيمة الافتراضية لـ None للوسيطات المضافة ، ما لم يتم تجاوزها.

ألق نظرة مرة أخرى على رسالة المساعدة:

الاستخدام: test.py [-h] [print_string]


برنامج اختبار.


الحجج الموضعية:

print_string يطبع الوسيطة المزودة.


الحجج الاختيارية:

-h ، - ساعد في إظهار رسالة المساعدة هذه والخروج

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

لتعريف الوسيطات الاختيارية وتحليلها ، يمكنك استخدام - (شرطة مزدوجة) وتغيير قيمها الافتراضية باستخدام الوسيطة الافتراضية.

يستوردجدل

محلل =جدل.حجة محلل(وصف='برنامج اختبار'.)

محلل.add_argument('--print_string'و يساعد='طباعة الوسيطة المتوفرة.'وإفتراضي=إلىعشوائي سلسلة.)

أرجس= محلل.parse_args()

مطبعة(أرجس.print_string)

الآن عند تشغيل البرنامج النصي test.py دون أي وسيطة ، يجب أن تحصل على سلسلة عشوائية. كإخراج. يمكنك أيضًا استخدام الكلمة الأساسية –print_string اختياريًا لطباعة أي سلسلة من اختيارك.

دولار /اختبار.السنة التحضيرية--print_string LinuxHint.معLinuxHint.com

لاحظ أنه يمكنك جعل الوسيطة الاختيارية إلزامية باستخدام وسيطة إضافية مطلوبة = True.

أخيرًا ، يمكنك أيضًا تحديد إصدارات مختصرة من الوسيطة باستخدام - (شرطة مفردة) لتقليل الإسهاب.

يستوردجدل

محلل =جدل.حجة محلل(وصف='برنامج اختبار'.)

محلل.add_argument(-pو '--print_string'و يساعد='طباعة الوسيطة المتوفرة.'وإفتراضي=إلىعشوائي سلسلة.)

أرجس= محلل.parse_args()

مطبعة(أرجس.print_string)

يجب أن يمنحك تشغيل الأمر التالي نفس النتيجة المذكورة أعلاه:

دولار /اختبار.السنة التحضيرية-p LinuxHint.مع

مثال 3: التعامل مع وسيطة عدد صحيح

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

يستوردجدل

محلل =جدل.حجة محلل(وصف='برنامج اختبار'.)

محلل.add_argument('-p'و '--print_string'و يساعد='طباعة الوسيطة المتوفرة.'و نوع=int)

أرجس= محلل.parse_args()

مطبعة(أرجس.print_string)

حاول تشغيل الأمر التالي:

دولار /اختبار.السنة التحضيرية-p LinuxHint.مع

يجب أن تحصل على خطأ مثل هذا:

الاستخدام: test.py [-h] [-p PRINT_STRING]

test.py: خطأ: وسيطة -p / - print_string: قيمة int غير صالحة: 'LinuxHint.com'

سيعطيك توفير قيمة عدد صحيح النتيجة الصحيحة:

دولار /اختبار.السنة التحضيرية-p10001000

مثال 4: التعامل مع تبديلي الصواب والخطأ

يمكنك تمرير وسيطات بدون أي قيم للتعامل معها كعلامات صواب وخطأ باستخدام وسيطة الإجراء.

يستوردجدل

محلل =جدل.حجة محلل(وصف='برنامج اختبار'.)

محلل.add_argument('-p'و '--print_string'و يساعد='طباعة الوسيطة المتوفرة.'وعمل='store_true')

أرجس= محلل.parse_args()

مطبعة(أرجس.print_string)

قم بتشغيل الأمر أدناه للحصول على True بسيط مثل الإخراج:

دولار /اختبار.السنة التحضيرية-p

إذا قمت بتشغيل البرنامج النصي بدون الوسيطة -p ، فسيتم تعيين قيمة False بدلاً من ذلك. تقوم القيمة store_true للكلمة الأساسية للإجراء بتعيين قيمة True لمتغير print_string عندما يتم تحديد الوسيطة -p بوضوح ، وإلا يتم تعيين False للمتغير.

مثال 5: معاملة قيم الوسيطة كقائمة

إذا كنت ترغب في الحصول على قيم متعددة مرة واحدة وتخزينها في القائمة ، فأنت بحاجة إلى توفير كلمة nargs بالتنسيق التالي:

يستوردجدل

محلل =جدل.حجة محلل(وصف='برنامج اختبار'.)

محلل.add_argument('-p'و '--print_string'و يساعد='طباعة الوسيطة المتوفرة.'والنرجس='*')

أرجس= محلل.parse_args()

مطبعة(أرجس.print_string)

قم بتشغيل الأمر التالي لاختبار الكود أعلاه:

دولار /اختبار.السنة التحضيرية-p أ ب

يجب أن تحصل على بعض الإخراج مثل هذا:

['أ' ، 'ب']

استنتاج

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