Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में कमांड लाइन विकल्पों के लिए पार्सर (argparse मॉड्यूल)

बहुत बार हमें कमांड लाइन से पायथन स्क्रिप्ट चलाते समय तर्क पास करने की आवश्यकता होती है। हालांकि, जब आवश्यक पैरामीटर्स समान संख्या, प्रकार या क्रम में प्रदान नहीं किए जाते हैं तो स्क्रिप्ट अपवाद उठाती है। यहीं कमांड लाइन तर्क को ठीक से पार्स करने की आवश्यकता होती है।

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')
  1. पायथन मैटप्लॉटलिब में कर्व्ड लाइन के लिए शीर्षक कैसे रखें पायथन मैटप्लॉटलिब में कर्व्ड लाइन के लिए शीर्षक कैसे रखें

    पायथन मैटप्लॉटलिब में कर्व्ड लाइन के लिए शीर्षक रखने के लिए, हम निम्नलिखित चरण अपना सकते हैं: चरण फिगर का आकार सेट करें और सबप्लॉट्स के बीच और आसपास पैडिंग एडजस्ट करें। x और y डेटा पॉइंट्स बनाएं ताकि लाइन एक कर्व हो। x और y डेटा पॉइंट्स प्लॉट करें। plt.title() मेथड का उपयोग करके कर्व प्लॉट के लिए

  1. कमांड लाइन के माध्यम से Python Matplotlib के साथ इंटरैक्टिव प्लॉटिंग कमांड लाइन के माध्यम से Python Matplotlib के साथ इंटरैक्टिव प्लॉटिंग

    इंटरैक्टिव प्लॉट्स प्राप्त करने के लिए फिगर को एक्टिवेट करना होगा। plt.ioff() और plt.ion() का उपयोग करके प्लॉट के साथ इंटरैक्टिव एक्शन परफॉर्म कर सकते हैं। Ipython शेल खोलें और शेल पर निम्न कमांड्स एंटर करें। उदाहरण In [1]: %matplotlib auto Using matplotlib backend: GTK3Agg In [2]: import matplotl

  1. पायथन में Tkinter बटन के लिए कमांड मेथड बदलना पायथन में Tkinter बटन के लिए कमांड मेथड बदलना

    बटन विजेट का महत्व यह है कि इसका उपयोग एप्लिकेशन में कुछ ऑपरेशन करने के लिए इवेंट्स को संभालने के लिए किया जाता है। ऐसे इवेंट्स को संभालने के लिए, हम आमतौर पर एक विधि परिभाषित करते हैं जिसमें कुछ ऑपरेशन होते हैं। मान लीजिए हम बटन को इनिशियलाइज़ करने के बाद इवेंट मेथड को बदलना चाहते हैं। हम configu