परिचय..
पायथन में एक बहुत शक्तिशाली argparse मॉड्यूल है जो कमांड लाइन आर्गुमेंट को पार्स करने के लिए फ़ंक्शन प्रदान करता है। यदि हम बिना अधिक इंटरैक्शन या कोड के OS कमांड लाइन से उपयोगकर्ता इनपुट प्राप्त करना चाहते हैं या एक प्रोग्राम कोड करना चाहते हैं जो कमांड लाइन से पैरामीटर स्वीकार करता है उदा. पार्स करने के लिए URL प्रदान करें या S3 बकेट में अपलोड करने के लिए फ़ाइल स्वीकार करें तो argparse का उपयोग न्यूनतम प्रयास से किया जा सकता है।
बुनियादी उपयोग
- उन आर्गुमेंट को परिभाषित करें जिन्हें आपका कोड स्वीकार करने वाला है।
- परिणाम ऑब्जेक्ट लौटाने के लिए आर्गुमेंट पार्सर को कॉल करें।
- आर्गुमेंट का उपयोग करें।
संक्षेप में, आर्गुमेंट पार्सर की संरचना नीचे जैसी दिखती है।
def main( parameters): << Logic here >> if __name__ == '__main__': << 1. Define argument parser >> << 2. Parse the arguements >> << 3. Validation >> << 4. call main (parameters) >>
मुख्य फ़ंक्शन जानता है कि हमारे कोड का प्रवेश बिंदु क्या है। __name__ == '__main__' सेक्शन केवल तभी निष्पादित होता है जब कोड सीधे कॉल किया जाता है।
- एक प्रोग्राम बनाएं जो केवल एक आर्गुमेंट स्वीकार करेगा - टेनिस खिलाड़ी स्ट्रिंग के रूप में।
import argparse def get_args(): \"\"\" Function : get_args .add_argument में उपयोग किए जाने वाले पैरामीटर्स 1. metavar - उपयोगकर्ता को डेटा प्रकार के बारे में संकेत दें। - डिफ़ॉल्ट रूप से, सभी आर्गुमेंट स्ट्रिंग्स हैं। 2. type - वास्तविक पायथन डेटा प्रकार - (str के आसपास उद्धरण की कमी पर ध्यान दें) 3. help - उपयोग के लिए पैरामीटर का संक्षिप्त विवरण \"\"\" parser = argparse.ArgumentParser( description='Example for Two positional arguments', formatter_class=argparse.ArgumentDefaultsHelpFormatter) # हमारा पहला आर्गुमेंट जोड़ना player name string प्रकार का parser.add_argument('player', metavar='player', type=str, help='Tennis Player') return parser.parse_args() # main परिभाषित करें def main(player): print(f" *** The {player} had won 20 grandslam titles.") if __name__ == '__main__': args = get_args() main(args.player)
a) अब जब आप इस प्रोग्राम को कमांड लाइन से बिना कोई पैरामीटर पास किए निष्पादित करते हैं यानी यदि कुछ नहीं दिया गया, तो यह प्रोग्राम को उचित तरीके से आमंत्रित करने के बारे में एक संक्षिप्त उपयोग विवरण प्रिंट करेगा।
In [3]: run <>.ipynb usage: ipython [-h] player ipython: error: the following arguments are required: player An exception has occurred, use %tb to see the full traceback.
b) यदि हम एक से अधिक आर्गुमेंट प्रदान करते हैं, तो यह फिर शिकायत करता है। प्रोग्राम दूसरे आर्गुमेंट के बारे में शिकायत करता है जिसे परिभाषित नहीं किया गया है।
c) केवल जब हम प्रोग्राम को ठीक एक आर्गुमेंट देते हैं तो यह चलेगा
2. एक प्रोग्राम बनाएं जो केवल दो आर्गुमेंट स्वीकार करेगा - टेनिस खिलाड़ी स्ट्रिंग के रूप में और खिलाड़ी द्वारा जीते गए ग्रैंड स्लैम खिताब पूर्णांक के रूप में।
उदाहरण
import argparse def get_args(): \"\"\" Function : get_args .add_argument में उपयोग किए जाने वाले पैरामीटर्स 1. metavar - उपयोगकर्ता को डेटा प्रकार के बारे में संकेत दें। - डिफ़ॉल्ट रूप से, सभी आर्गुमेंट स्ट्रिंग्स हैं। 2. type - वास्तविक पायथन डेटा प्रकार - (str के आसपास उद्धरण की कमी पर ध्यान दें) 3. help - उपयोग के लिए पैरामीटर का संक्षिप्त विवरण \"\"\" parser = argparse.ArgumentParser( description='Example for Two positional arguments', formatter_class=argparse.ArgumentDefaultsHelpFormatter) # हमारा पहला आर्गुमेंट जोड़ना player name string प्रकार का parser.add_argument('player', metavar='player', type=str, help='Tennis Player') # हमारा दूसरा आर्गुमेंट जोड़ना player titles integer/number प्रकार का। parser.add_argument('titles', metavar='titles', type=int, help='Tennis Player Grandslam Titles') return parser.parse_args() # main परिभाषित करें def main(player, titles): print(f" *** The {player} had won {titles} grandslam titles.") if __name__ == '__main__': args = get_args() main(args.player, args.titles)
अब अपना टर्मिनल खोलें और प्रोग्राम निष्पादित करें। यदि आर्गुमेंट पास नहीं किए गए हैं, तो स्क्रिप्ट स्पष्ट संदेश के साथ त्रुटि वापस फेंक देगी।
आउटपुट
<<< python test.py usage: test.py [-h] player titles test.py: error: the following arguments are required: player, titles <<< python test.py federer 20 *** The federer had won 20 grandslam titles.