بايثون ، اقبل الحجج من سطر الأوامر

تقدم Python عدة طرق للتعامل مع الوسائط التي تم تمريرها عندما نستدعي البرنامج من سطر الأوامر.

حتى الآن قمت بتشغيل البرامج إما من REPL أو باستخدام

python <filename>.py

يمكنك تمرير الحجج والخيارات الإضافية عند القيام بذلك ، مثل هذا:

python <filename>.py <argument1>
python <filename>.py <argument1> <argument2>

الطريقة الأساسية للتعامل مع هذه الحجج هي استخدامsysوحدة من المكتبة القياسية.

يمكنك الحصول على الحجج التي تم تمريرها فيsys.argvقائمة:

import sys
print(len(sys.argv))
print(sys.argv)

الsys.argvتحتوي القائمة كأول عنصر على اسم الملف الذي تم تشغيله ، على سبيل المثال['main.py'].

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

توفر Python حزمة أخرى في المكتبة القياسية لمساعدتك:argparse.

أولا تقوم بالاستيرادargparseوأنت تتصلargparse.ArgumentParser()، تمرير وصف البرنامج الخاص بك:

import argparse

parser = argparse.ArgumentParser( description=‘This program prints the name of my dogs’ )

ثم تتابع لإضافة الوسائط التي تريد قبولها. على سبيل المثال في هذا البرنامج نقبل أ-cخيار لتمرير لون ، مثل هذا:python program.py -c red

import argparse

parser = argparse.ArgumentParser( description=‘This program prints a color HEX value’ )

parser.add_argument(’-c’, ‘–color’, metavar=‘color’, required=True, help=‘the color to search for’)

args = parser.parse_args()

print(args.color) # ‘red’

إذا لم يتم تحديد الوسيطة ، فإن البرنامج يثير خطأ:

➜  python python program.py
usage: program.py [-h] -c color
program.py: error: the following arguments are required: -c

You can set an option to have a specific set of values, using choices:

parser.add_argument('-c', '--color', metavar='color', required=True, choices={'red','yellow'}, help='the color to search for')
➜  python python program.py -c blue
usage: program.py [-h] -c color
program.py: error: argument -c/--color: invalid choice: 'blue' (choose from 'yellow', 'red')

There are more options, but those are the basics.

And there are community packages that provide this functionality, too, like Click and Python Prompt Toolkit.


More python tutorials: