1. الاستخدام الأساسي لمعاملات سطر الأوامر في Python

ما هي معاملات سطر الأوامر؟

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

الحصول على معاملات سطر الأوامر باستخدام sys.argv

في Python، يمكن استخدام مكتبة sys القياسية للحصول على معاملات سطر الأوامر. المتغير sys.argv هو قائمة تحتوي على هذه المعاملات. العنصر الأول في القائمة (sys.argv[0]) هو اسم البرنامج المنفذ، والعناصر التالية هي القيم الممررة كمعاملات.

مثال: برنامج حساب بسيط

import sys

def main():
    if len(sys.argv) < 3:
        print("خطأ: مطلوب معاملان")
        return

    num1 = float(sys.argv[1])
    num2 = float(sys.argv[2])
    print(f"المجموع: {num1 + num2}")

if __name__ == "__main__":
    main()
يعرض البرنامج أعلاه مجموع رقمين تم تمريرهما من سطر الأوامر. مثال للتنفيذ:
$ python script.py 3 5
المجموع: 8.0
 

2. المعالجة المتقدمة للمعاملات باستخدام argparse

أساسيات argparse

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

تحليل المعاملات وإنشاء محلل

لاستخدام argparse، نبدأ بإنشاء محلل معاملات، ثم نحدد المعاملات المطلوبة ونقوم بتحليلها.

مثال: الاستخدام الأساسي لـ argparse

import argparse

def main():
    parser = argparse.ArgumentParser(description='برنامج تجريبي')
    parser.add_argument('arg1', help='المعامل الأول')
    parser.add_argument('arg2', type=float, help='المعامل الثاني (عدد)')
    args = parser.parse_args()

    print(f"arg1 = {args.arg1}")
    print(f"arg2 = {args.arg2}")

if __name__ == "__main__":
    main()
في هذا البرنامج، يتم استقبال معاملين: arg1 كنص وarg2 كعدد، ثم طباعتهما بعد التحليل.
$ python script.py test 5.5
arg1 = test
arg2 = 5.5

معالجة المعاملات الاختيارية والأعلام

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

مثال: استخدام المعاملات الاختيارية والأعلام

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--verbose', action='store_true', help='إظهار إخراج مفصل')
    parser.add_argument('numbers', nargs='+', type=float, help='قائمة من الأعداد')
    args = parser.parse_args()

    total = sum(args.numbers)
    if args.verbose:
        print(f"تفاصيل الحساب: مجموع {args.numbers} هو {total}")
    else:
        print(f"المجموع: {total}")

if __name__ == "__main__":
    main()
في هذا البرنامج، عند تمرير العلم --verbose يتم عرض تفاصيل إضافية، وإلا يتم عرض النتيجة بشكل مبسط.
$ python script.py 1 2 3 --verbose
تفاصيل الحساب: مجموع [1.0, 2.0, 3.0] هو 6.0
 

3. معالجة الأخطاء والتحقق من المعاملات

التحقق من عدد ونوع المعاملات

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

مثال: التحقق من عدد ونوع المعاملات

import sys

def main():
    if len(sys.argv) != 3:
        print("خطأ: مطلوب معاملان")
        return

    try:
        num1 = float(sys.argv[1])
        num2 = float(sys.argv[2])
    except ValueError:
        print("خطأ: يجب أن تكون المعاملات أعدادًا")
        return

    print(f"المجموع: {num1 + num2}")

if __name__ == "__main__":
    main()
في هذا البرنامج، إذا لم يكن عدد المعاملات ثلاثة (اسم البرنامج + معاملان)، يتم عرض رسالة خطأ. كما يتم التحقق من أن المدخلات أعداد صحيحة.

4. حالات الاستخدام العملية والتطبيقات

مثال على إنشاء أداة سطر أوامر

يمكن استخدام معاملات سطر الأوامر لإنشاء أدوات عملية مثل التعامل مع الملفات أو معالجة البيانات.

مثال: أداة لعدّ أسطر الملف

import argparse

def main():
    parser = argparse.ArgumentParser(description='أداة لعد أسطر الملف')
    parser.add_argument('filename', help='اسم الملف المطلوب عده')
    args = parser.parse_args()

    try:
        with open(args.filename, 'r') as file:
            lines = file.readlines()
            print(f"عدد الأسطر في الملف {args.filename}: {len(lines)}")
    except FileNotFoundError:
        print(f"خطأ: لم يتم العثور على الملف {args.filename}")

if __name__ == "__main__":
    main()
تقوم هذه الأداة بعدّ عدد الأسطر في الملف المحدد.
$ python count_lines.py example.txt
عدد الأسطر في الملف example.txt: 100
年収訴求

5. الخلاصة

تعلم كيفية التعامل مع معاملات سطر الأوامر في Python يمنح برامجك مرونة أكبر. بدءًا من sys.argv للطريقة البسيطة وحتى argparse للمعالجة المتقدمة، يمكنك اختيار الأسلوب المناسب حسب الحاجة. كما أن تضمين معالجة الأخطاء والتحقق من صحة المعاملات يساهم في إنشاء برامج أكثر قوة واستقرارًا.
侍エンジニア塾