"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إتقان واجهات سطر الأوامر (CLI) في بيثون: دليل شامل

إتقان واجهات سطر الأوامر (CLI) في بيثون: دليل شامل

تم النشر بتاريخ 2024-11-08
تصفح:262

Mastering Command-Line Interfaces (CLI) in Python: A Comprehensive Guide

مقدمة

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

في منشور المدونة هذا، سنتعمق في العمل مع CLIs في Python، ونغطي ما يلي:

  • لماذا نبني واجهة سطر الأوامر؟
  • وحدات بايثون لبناء CLIs
  • أساسيات وسيطات سطر الأوامر
  • ميزات متقدمة باستخدام argparse
  • إنشاء أدوات واجهة سطر الأوامر (CLI) بنقرة واحدة
  • معالجة الأخطاء في أدوات CLI
  • تغليف أدوات واجهة سطر الأوامر للتوزيع

بحلول نهاية هذا المنشور، ستكون جاهزًا لإنشاء تطبيقات سطر أوامر قوية وسهلة الاستخدام.


لماذا إنشاء واجهة سطر الأوامر (CLI)؟

تُستخدم واجهات سطر الأوامر (CLIs) على نطاق واسع في إدارة النظام، ومعالجة البيانات، وتطوير البرامج لأنها تقدم:

  1. الأتمتة: برمجة المهام المتكررة لتوفير الوقت وتقليل الأخطاء.
  2. البساطة: قم بتشغيل الأوامر المعقدة ببضع ضغطات على المفاتيح.
  3. قابلية النقل: يمكن استخدام أداة CLI جيدة التصميم على أي جهاز بدون واجهة المستخدم الرسومية.
  4. أدوات المطورين: العديد من أدوات التطوير (مثل git وnpm وpip) تعتمد على واجهة سطر الأوامر (CLI).

وحدات بايثون لتطوير CLI

تقدم بايثون العديد من المكتبات لبناء أدوات واجهة سطر الأوامر:

  1. sys.argv: الوصول المباشر إلى وسائط سطر الأوامر، مناسب للنصوص الصغيرة والبسيطة.
  2. argparse: وحدة مدمجة للتعامل مع وسائط سطر الأوامر من خلال إنشاء المساعدة التلقائية.
  3. انقر على: مكتبة قوية ومرنة لإنشاء تطبيقات CLI المعقدة.
  4. النوع: مكتبة حديثة مبنية على النقر، والتي تستخدم تلميحات نوع بايثون لسهولة الاستخدام.

العمل مع sys.argv

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']

حدود sys.argv:

  • لا يوجد فحص للنوع: يتم التعامل مع جميع المدخلات كسلاسل.
  • لا توجد رسالة مساعدة مضمنة: تحتاج إلى التحقق من صحة المدخلات وعرض معلومات الاستخدام يدويًا.

إنشاء CLIs باستخدام argparse

وحدة 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!

الميزات الرئيسية لـ argparse:

  1. الوسائط الموضعية والاختيارية: تحديد المعلمات المطلوبة والاختيارية بسهولة.
  2. التحقق من النوع: تأكد من أن المستخدم يقدم نوع البيانات الصحيح.
  3. الاختيارات: تقييد المدخلات على قيم محددة باستخدام معلمة الاختيارات.
  4. رسائل المساعدة: إنشاء المساعدة تلقائيًا باستخدام العلامة -h أو --help.

مثال على التحقق من النوع والاختيارات:

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

أدوات CLI المتقدمة بنقرة واحدة

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...

معالجة الأخطاء في أدوات CLI

بغض النظر عن المكتبة التي تستخدمها، فإن معالجة الأخطاء أمر بالغ الأهمية لتوفير تجربة مستخدم سلسة.

مثال في argparse:

إذا كانت الوسيطة المطلوبة مفقودة، فسيقوم 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 واتبع الخطوات لتحميل الحزمة الخاصة بك:

  1. إنشاء الحزمة:
   python setup.py sdist bdist_wheel
  1. رفع الحزمة:
   twine upload dist/*

أفضل الممارسات لبناء CLIs

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

خاتمة

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

الآن بعد أن تعلمت الأساسيات والميزات المتقدمة للعمل مع CLI في Python، فقد حان الوقت لوضعها موضع التنفيذ. قم ببناء أداتك الخاصة، أو شاركها، أو حتى قم بتوزيعها عالميًا!


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

  • لينكد إن
  • جيت هاب
بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/usooldatascience/mastering-command-line-interfaces-cli-in-python-a-comprehensive-guide-10bc?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3