تشتهر بايثون على نطاق واسع بتعدد استخداماتها وسهولة استخدامها، خاصة عند إنشاء تطبيقات واجهة سطر الأوامر (CLI). سواء كنت ترغب في أتمتة المهام العادية، أو إنشاء أدوات المطورين، أو إنشاء نصوص برمجية مرنة، فإن النظام البيئي الغني لـ Python يوفر مكتبات متنوعة للتعامل مع واجهة سطر الأوامر (CLI) بكفاءة.
في منشور المدونة هذا، سنتعمق في العمل مع CLIs في Python، ونغطي ما يلي:
بحلول نهاية هذا المنشور، ستكون جاهزًا لإنشاء تطبيقات سطر أوامر قوية وسهلة الاستخدام.
تُستخدم واجهات سطر الأوامر (CLIs) على نطاق واسع في إدارة النظام، ومعالجة البيانات، وتطوير البرامج لأنها تقدم:
تقدم بايثون العديد من المكتبات لبناء أدوات واجهة سطر الأوامر:
sys.argv هي طريقة أساسية للوصول إلى وسيطات سطر الأوامر. يقوم بتخزين وسيطات سطر الأوامر كقائمة، حيث يكون العنصر الأول دائمًا هو اسم البرنامج النصي.
import sys # Command-line arguments print(f"Script Name: {sys.argv[0]}") print(f"Arguments: {sys.argv[1:]}")
تشغيل البرنامج النصي:
$ python script.py arg1 arg2 arg3 Script Name: script.py Arguments: ['arg1', 'arg2', 'arg3']
وحدة argparse هي مكتبة Python القياسية لإنشاء CLIs. فهو يوفر تحكمًا أكبر من sys.argv ويقوم تلقائيًا بإنشاء رسائل المساعدة ومعالجة الأخطاء.
import argparse parser = argparse.ArgumentParser(description="A simple CLI tool") parser.add_argument("name", help="Your name") parser.add_argument("--greet", help="Custom greeting", default="Hello") args = parser.parse_args() print(f"{args.greet}, {args.name}!")
تشغيل البرنامج النصي:
$ python script.py Alice Hello, Alice! $ python script.py Alice --greet Hi Hi, Alice!
مثال على التحقق من النوع والاختيارات:
parser.add_argument("age", type=int, help="Your age") parser.add_argument("--format", choices=["json", "xml"], help="Output format")
تشغيل البرنامج النصي:
$ python script.py Alice 30 --format json
click هي مكتبة أكثر تقدمًا لإنشاء واجهات سطر الأوامر. يوفر أسلوبًا قائمًا على الديكور لتحديد الأوامر والأوامر الفرعية والخيارات.
import click @click.command() @click.option('--name', prompt='Your name', help='The person to greet.') @click.option('--greet', default="Hello", help='Greeting to use.') def greet(name, greet): """Simple program that greets NAME with a GREET.""" click.echo(f'{greet}, {name}!') if __name__ == '__main__': greet()
تشغيل البرنامج النصي:
$ python greet.py --name Alice --greet Hi Hi, Alice!
يمكنك إنشاء أدوات CLI أكثر تعقيدًا بأوامر فرعية متعددة.
import click @click.group() def cli(): pass @cli.command() def start(): click.echo("Starting the application...") @cli.command() def stop(): click.echo("Stopping the application...") if __name__ == '__main__': cli()
تشغيل البرنامج النصي:
$ python app.py start Starting the application... $ python app.py stop Stopping the application...
بغض النظر عن المكتبة التي تستخدمها، فإن معالجة الأخطاء أمر بالغ الأهمية لتوفير تجربة مستخدم سلسة.
إذا كانت الوسيطة المطلوبة مفقودة، فسيقوم argparse بإلقاء خطأ وعرض تعليمات الاستخدام:
$ python script.py usage: script.py [-h] name script.py: error: the following arguments are required: name
بالنقر، يمكنك رفع الاستثناءات المخصصة والتعامل مع الأخطاء بأمان باستخدام أدوات الديكور.
@click.command() @click.option('--count', type=int, help='Number of repetitions') def repeat(count): if count is None or count
الجمع بين argparse والنقر مع مكتبات أخرى
لتوسيع وظيفة واجهة سطر الأوامر (CLI)، يمكنك دمج argparse أو النقر مع مكتبات أخرى مثل نظام التشغيل أو العمليات الفرعية أو حتى المكتبات المخصصة.
مثال: دمج argparse مع نظام التشغيل
import os import argparse parser = argparse.ArgumentParser(description="File operations CLI") parser.add_argument("filename", help="Name of the file to check") parser.add_argument("--create", action="store_true", help="Create the file if it does not exist") args = parser.parse_args() if os.path.exists(args.filename): print(f"{args.filename} already exists.") else: if args.create: with open(args.filename, 'w') as f: f.write("New file created.") print(f"{args.filename} created.") else: print(f"{args.filename} does not exist.")تشغيل البرنامج النصي:
$ python filecli.py example.txt --create example.txt created.
تعبئة أداة CLI الخاصة بك
لتوزيع أداة CLI الخاصة بك، يمكنك حزمها باستخدام أدوات الإعداد وإتاحتها عالميًا على أي نظام.
الخطوة 1: إنشاء ملف setup.py
from setuptools import setup setup( name='greet-cli', version='0.1', py_modules=['greet'], install_requires=[ 'click', ], entry_points=''' [console_scripts] greet=greet:greet ''', )الخطوة 2: تثبيت واجهة سطر الأوامر (CLI) محليًا
$ pip install --editable .الآن، أصبح أمر الترحيب متاحًا عالميًا:
$ greet --name Alice Hello, Alice!التوزيع على PyPI
لتوزيع أداتك بشكل عام، قم بإنشاء حساب PyPI واتبع الخطوات لتحميل الحزمة الخاصة بك:
- إنشاء الحزمة:
python setup.py sdist bdist_wheel
- رفع الحزمة:
twine upload dist/*
أفضل الممارسات لبناء CLIs
- تقديم رسائل مساعدة واضحة: قم دائمًا بتضمين --help لتوجيه المستخدمين.
- التحقق من صحة المدخلات: استخدم التحقق من النوع والتعامل مع الاستثناءات بأمان.
- تصميم أوامر بديهية: تأكد من أن بنية الأوامر الخاصة بك منطقية وسهلة الاستخدام.
- اختبار باستخدام حالات الحافة: تأكد من أن أداة CLI الخاصة بك تعمل بشكل صحيح حتى مع المدخلات غير الصالحة.
- وحدة التعليمات البرمجية الخاصة بك: احتفظ بمنطق سطر الأوامر الخاص بك منفصلاً عن وظائفك الأساسية لتسهيل الاختبار والصيانة.
خاتمة
توفر بايثون مجموعة أدوات ممتازة لبناء تطبيقات واجهة سطر الأوامر (CLI). سواء كنت تستخدم وحدة argparse المدمجة أو النقر الأكثر ثراءً بالميزات، يمكنك إنشاء أدوات قوية وسهلة الاستخدام يمكنها أتمتة سير العمل ومعالجة البيانات وتحسين الإنتاجية.
الآن بعد أن تعلمت الأساسيات والميزات المتقدمة للعمل مع CLI في Python، فقد حان الوقت لوضعها موضع التنفيذ. قم ببناء أداتك الخاصة، أو شاركها، أو حتى قم بتوزيعها عالميًا!
لا تتردد في التواصل معنا لطرح الأسئلة أو الاقتراحات:
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3