أفضل طريقة لجعل واجهات سطر الأوامر في بيثون

كيفية كتابة برامج Python سهلة الاستخدام وبديهية

واجهة سطر الأوامر (CLI):

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

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

عندما بدأت البرمجة لأول مرة في Python ، جمعت بشكل شبه حصري مدخلات المستخدم بشكل تفاعلي مثل هذا:

def main ():
    أولاً = الإدخال ("أدخل اسمك الأول:")
    الأخير = الإدخال ("أدخل اسمك الأخير:")
    طباعة (الأول + '' + الأخير)

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

اعتبارات مهمة

عند إنشاء CLI ، من المهم مراعاة ما يلي:

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

قراءة الحجج باستخدام argparse

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

للبدء ، قم بإنشاء ملف جديد يسمى test_cli.py واستيراد الوحدة النمطية وتهيئة محلل جديد:

استيراد argparse
المحلل اللغوي = argparse.ArgumentParser ()
parser.parse_args ()

الآن قم بتشغيل الكود باستخدام خيار - help:

python3 test_cli.py - مساعدة

يجب أن تتلقى رسالة مساعدة افتراضية لطيفة مثل هذا:

الاستخدام: test_cli.py [-h]
الوسائط الاختيارية:
    -h ، - مساعدة تظهر رسالة المساعدة هذه والخروج

تهانينا لك للتو على واجهة سطر الأوامر الأولى!

الآن ، دعونا نضيف رسالة ترحيب للسماح لفترة وجيزة لمستخدمك بمعرفة ما يفعله البرنامج:

welcome = "التدريب على إنشاء واجهات سطر أوامر تفاعلية"
محلل = argparse.ArgumentParser (وصف = موضع ترحيب)
parser.parse_args ()

الآن قم بتشغيل البرنامج مع العلم -h. يجب أن تكون قادرًا على رؤية رسالة الترحيب الرائعة.

الآن دعونا نفعل شيئا أكثر فائدة.

مضيفا الحجج

لنفترض أننا نكتب برنامجًا لكشط صفحة ويب. بعض الحجج التي قد نحتاجها هي مجال صفحة الويب - المجال أو - d ، والخيار لتسجيل الإخراج إلى ملف خارج - ملف شخصي أو - أو ، وربما خيار طباعة عدد معين من خطوط الإخراج إلى وحدة التحكم - خطوط أو -l. في هذا المثال ، سنجعل وسيطة المجال مطلوبة ، بينما ستكون وسيطات ofile وخطوط اختيارية.

يمكننا بسهولة إضافة وسيطات إضافية إلى وسيطة argparse باستخدام .add_argument والذي سيتيح لنا تحديد تفاصيل الاستخدام. يمكننا إضافة الوسيطة المطلوبة - المجال على هذا النحو:

parser.add_argument ('- domain' ، '-d' ، required = True ، help = 'اسم مجال موقع الويب الذي تريد كشطه ، أي "https://ahadsheriff.com"')

الآن قم بتشغيل البرنامج باستخدام الوسيطة -h لمشاهدة الوثائق التي كتبتها!

بما أن - domain هي وسيطة مطلوبة ، فحاول تشغيل البرنامج دون أي علامات وسيتم التعامل معك على الرسالة التالية:

الاستخدام: test_cli.py [-h] - domain DOMAIN
test_cli.py: error: الوسائط التالية مطلوبة: --domain / -d

إنها تعمل!

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

parser.add_argument ('- ofile' ، '-o' ، help = 'تحديد ملف الإخراج لحفظ نتائج stdout. مثل "output.txt"')
parser.add_argument ('- lines'، '-' '، help =' عدد خطوط الإخراج للطباعة إلى وحدة التحكم ""، type = int)

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

args = parser.parse_args ()
المجال = args.domain
ofile = args.ofile
خطوط = args.lines
طباعة ("المجال:" ، المجال)
طباعة ("ملف الإخراج:" ، ofile)
طباعة ("خطوط:" ، خطوط)

ملاحظة: يتم تخزين الوسائط الاختيارية كـ بلا افتراضيًا أثناء عدم استخدامها.

هنا هو كل رمز بلدي:

فى الختام

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

شكرا للقراءة! إذا كنت قد استمتعت به ، فتأكد من تحطيم زر "المتابعة" :) وتأكد أيضًا من الاطلاع على موقعي وتويتر و LinkedIn و Github.