परिचय..
पायथन में एक बहुत शक्तिशाली argparse मॉड्यूल है जो कमांड लाइन तर्कों को पार्स करने के लिए कार्य प्रदान करता है। यदि हम बिना किसी इंटरेक्शन के ओएस कमांड लाइन से उपयोगकर्ता इनपुट प्राप्त करना चाहते हैं या एक प्रोग्राम कोड करना चाहते हैं जो कमांड लाइन से पैरामीटर स्वीकार करता है उदा। पार्स करने के लिए एक 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 parameters used in .add_argument 1. metavar - Provide a hint to the user about the data type. - By default, all arguments are strings. 2. type - The actual Python data type - (note the lack of quotes around str) 3. help - A brief description of the parameter for the usage """ parser = argparse.ArgumentParser( description='Example for Two positional arguments', formatter_class=argparse.ArgumentDefaultsHelpFormatter) # Adding our first argument player name of type string parser.add_argument('player', metavar='player', type=str, help='Tennis Player') return parser.parse_args() # define 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.
बी) यदि हम एक से अधिक तर्क प्रदान करते हैं, तो यह फिर से शिकायत करता है। कार्यक्रम एक दूसरा तर्क प्राप्त करने की शिकायत करता है जिसे परिभाषित नहीं किया गया है।
ग) केवल जब हम प्रोग्राम को ठीक एक तर्क देते हैं तो वह चलेगा
2. एक प्रोग्राम बनाएं जो केवल दो तर्कों को स्वीकार करेगा - टेनिस खिलाड़ी स्ट्रिंग के रूप में और ग्रैंड स्लैम खिताब खिलाड़ी द्वारा पूर्णांक के रूप में जीते गए।
उदाहरण
import argparse def get_args(): """ Function : get_args parameters used in .add_argument 1. metavar - Provide a hint to the user about the data type. - By default, all arguments are strings. 2. type - The actual Python data type - (note the lack of quotes around str) 3. help - A brief description of the parameter for the usage """ parser = argparse.ArgumentParser( description='Example for Two positional arguments', formatter_class=argparse.ArgumentDefaultsHelpFormatter) # Adding our first argument player name of type string parser.add_argument('player', metavar='player', type=str, help='Tennis Player') # Adding our second argument player titles of type integer/number. parser.add_argument('titles', metavar='titles', type=int, help='Tennis Player Grandslam Titles') return parser.parse_args() # define 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.