मैं अपने बुनियादी ढांचे के प्रबंधन के लिए स्क्रिप्ट और मॉड्यूल का एक सेट तैयार कर रहा हूं। चीजों को संगठित रखने के लिए मैं जितना संभव हो उतना प्रयास करना चाहता हूं और नई स्क्रिप्ट के लिए बॉयलर प्लेट को कम करना चाहता हूं।एकाधिक कस्टम मॉड्यूल द्वारा समर्थित कई स्क्रिप्ट में पायथन के Argparse का उपयोग
विशेष रूप से यहां तर्क ArgumentParser मॉड्यूल को समेकित करना है।
एक उदाहरण संरचना स्क्रिप्ट और पुस्तकालयों कुछ इस तरह का आयोजन किया है:
|-- bin
|-- script1
|-- script2
|-- lib
|-- logger
|-- lib1
|-- lib2
इस परिदृश्य script1
में केवल logger
और lib1
का उपयोग कर सकते हैं, जबकि script2
logger
और lib2
का इस्तेमाल करते हैं जाएगा। दोनों मामलों में मैं लॉगर को '-v' और '-d' स्वीकार करना चाहता हूं, जबकि script1
अतिरिक्त तर्क और lib2
अन्य तर्क भी स्वीकार कर सकता है। मुझे पता है कि इससे टकराव हो सकता है और मैन्युअल रूप से इसका प्रबंधन करेगा।
script1
#!/usr/bin/env python
import logger
import lib1
argp = argparse.ArgumentParser("logger", parent=[logger.argp])
script2
#!/usr/bin/env python
import logger
import lib2
लकड़हारा
#!/usr/bin/env python
import argparse
argp = argparse.ArgumentParser("logger")
argp.add_argument('-v', '--verbose', action="store_true", help="Verbose output")
argp.add_argument('-d', '--debug', action="store_true", help="Debug output. Assumes verbose output.")
प्रत्येक स्क्रिप्ट और lib सह uld संभावित रूप से अपने स्वयं के तर्क हैं, हालांकि इन सभी को एक अंतिम arg_parse()
में समेकित होना होगा, अब तक मेरे प्रयासों ने argp सेटअप को उत्तराधिकारी/विस्तारित करने में असफल रहा है। लाइब्रेरी फ़ाइल और स्क्रिप्ट के बीच यह कैसे किया जा सकता है?
आप कहते हैं कि argparse माता-पिता = [पार्सर 1, पार्सर 2] कार्यक्षमता आपके लिए काम नहीं करती है - यह कैसे टूटती है? – babbageclunk