बहुत बार हमें कमांड लाइन से पायथन स्क्रिप्ट चलाते समय तर्क पास करने की आवश्यकता होती है। हालांकि, जब आवश्यक पैरामीटर्स समान संख्या, प्रकार या क्रम में प्रदान नहीं किए जाते हैं तो स्क्रिप्ट अपवाद उठाती है। यहीं कमांड लाइन तर्क को ठीक से पार्स करने की आवश्यकता होती है।
argparse मॉड्यूल बहुत उपयोग में आसान कमांड लाइन इंटरफेस लिखने के लिए टूल्स प्रदान करता है। यह sys.argv लिस्ट में एकत्रित तर्कों को कैसे पार्स करना है, स्वचालित रूप से सहायता उत्पन्न करना और अमान्य विकल्प दिए जाने पर त्रुटि संदेश जारी करना संभालता है।
पार्सर ऑब्जेक्ट सेटअप करना
कमांड लाइन इंटरफेस डिजाइन करने का पहला कदम पार्सर ऑब्जेक्ट सेट करना है। यह argparse मॉड्यूल में ArgumentParser() फ़ंक्शन द्वारा किया जाता है। फ़ंक्शन को विवरण पैरामीटर के रूप में एक व्याख्यात्मक स्ट्रिंग दी जा सकती है।
शुरू करने के लिए हमारी स्क्रिप्ट बिना किसी तर्क के कमांड लाइन से चलाई जाएगी। फिर भी पार्सर ऑब्जेक्ट की parse_args() मेथड का उपयोग करें, जो कुछ नहीं करती क्योंकि कोई तर्क नहीं दिया गया है।
import argparse parser = argparse.ArgumentParser(description="sample argument parser") args = parser.parse_args()
जब उपरोक्त स्क्रिप्ट चलाई जाती है:
C:\python36>python argparser1.py C:\python36>python argparser1.py --help usage: argparser1.py [-h] sample argument parser optional arguments: -h, --help show this help message and exit
दूसरा कमांड लाइन उपयोग --help विकल्प देता है जो दिखाए अनुसार सहायता संदेश उत्पन्न करता है। --help पैरामीटर डिफ़ॉल्ट रूप से उपलब्ध है।
अनिवार्य तर्क परिभाषित करना
अब आइए एक तर्क परिभाषित करें जो स्क्रिप्ट चलाने के लिए अनिवार्य है और यदि नहीं दिया गया तो स्क्रिप्ट को त्रुटि फेंकनी चाहिए। यहां हम add_argument() मेथड द्वारा 'user' तर्क को परिभाषित करते हैं।
import argparse
parser = argparse.ArgumentParser(description="sample argument parser")
parser.add_argument("user")
args = parser.parse_args()
if args.user == "Admin":
print("Hello Admin")
else:
print("Hello Guest")
इस स्क्रिप्ट की सहायता अब 'user' के रूप में एक पोजिशनल तर्क दिखाती है। प्रोग्राम जांचता है कि इसका मान 'Admin' है या नहीं और तदनुसार संदेश प्रिंट करता है।
C:\python36>python argparser1.py --help usage: argparser1.py [-h] user sample argument parser positional arguments: user optional arguments: -h, --help show this help message and exit C:\python36>python argparser1.py Admin Hello Admin C:\python36>python argparser1.py temp Hello Guest
डिफ़ॉल्ट मान निर्दिष्ट करना
हम add_argument() मेथड में default मान निर्दिष्ट कर सकते हैं।
import argparse
parser = argparse.ArgumentParser(description="sample argument parser")
parser.add_argument("user", nargs='?', default="Admin")
args = parser.parse_args()
if args.user == "Admin":
print("Hello Admin")
else:
print("Hello Guest")
यहां nargs कमांड-लाइन तर्कों की संख्या है जिनका उपभोग किया जाना चाहिए। '?'। यदि संभव हो तो कमांड लाइन से एक तर्क का उपभोग किया जाएगा और एकल आइटम के रूप में उत्पन्न किया जाएगा। यदि कोई कमांड-लाइन तर्क मौजूद नहीं है, तो डिफ़ॉल्ट से मान उत्पन्न होगा।
C:\python36>python argparser1.py Hello Admin C:\python36>python argparser1.py Admin Hello Admin C:\python36>python argparser1.py test Hello Guest
तर्क प्रकार निर्दिष्ट करना
डिफ़ॉल्ट रूप से, सभी तर्क स्ट्रिंग्स के रूप में माने जाते हैं। तर्क के प्रकार को स्पष्ट रूप से उल्लेख करने के लिए, add_argument() मेथड में type पैरामीटर का उपयोग करें। सभी पायथन डेटा टाइप्स type के वैध मान हैं।
import argparse
parser = argparse.ArgumentParser(description="add numbers")
parser.add_argument("first", type=int)
parser.add_argument("second", type=int)
args = parser.parse_args()
x = args.first
y = args.second
z = x + y
print('addition of {} and {} = {}'.format(x, y, z))
C:\python36>python argparser2.py 2 3
addition of 2 and 3 = 5
वैकल्पिक तर्क
उपरोक्त उदाहरणों में, तर्क अनिवार्य हैं। वैकल्पिक तर्क जोड़ने के लिए, इसके नाम को डबल डैश -- से प्रीफिक्स करें। निम्न मामले में surname तर्क वैकल्पिक है क्योंकि इसे डबल डैश (--surname) से प्रीफिक्स किया गया है।
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("name")
parser.add_argument("--surname")
args = parser.parse_args()
print("My name is ", args.name, end=' ')
if args.surname:
print(args.surname)
सिंगल डैश से प्रीफिक्स किया गया तर्क का एक अक्षर का नाम शॉर्ट नेम विकल्प के रूप में कार्य करता है।
C:\python36>python argparser3.py Malhar
My name is Malhar
C:\python36>python argparser3.py Malhar --surname Lathkar
My name is Malhar Lathkar
parser.add_argument("-s", "--surname")
विकल्पों को सीमित करना (choices)
यदि वांछित है कि तर्क का मान केवल परिभाषित सूची से होना चाहिए, तो इसे choices पैरामीटर के रूप में परिभाषित किया जाता है।
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("sub", choices=['Physics', 'Maths', 'Biology'])
args = parser.parse_args()
print("My subject is ", args.sub)
ध्यान दें कि यदि पैरामीटर का मान सूची से नहीं है, तो अमान्य विकल्प त्रुटि प्रदर्शित होती है।
C:\python36>python argparser4.py Physics
My subject is Physics
C:\python36>python argparser4.py English
usage: argparser4.py [-h] {Physics,Maths,Biology}
argparser4.py: error: argument sub: invalid choice: 'English' (choose from 'Physics', 'Maths', 'Biology')