मैं निम्नलिखित कोड (अजगर 2.7 का प्रयोग करके) है argparse वैकल्पिक subparser:(--version के लिए)
# shared command line options, like --version or --verbose
parser_shared = argparse.ArgumentParser(add_help=False)
parser_shared.add_argument('--version', action='store_true')
# the main parser, inherits from `parser_shared`
parser = argparse.ArgumentParser(description='main', parents=[parser_shared])
# several subcommands, which can't inherit from the main parser, since
# it would expect subcommands ad infinitum
subparsers = parser.add_subparsers('db', parents=[parser_shared])
...
args = parser.parse_args()
अब मैं चाहते हैं इस कार्यक्रम जैसे कॉल करने के लिए सक्षम होने के लिए --version
सामान्य कार्यक्रम या कुछ subcommand के साथ जोड़ दिया साथ:
$ prog --version
0.1
$ prog db --version
0.1
असल में, मैं वैकल्पिक subparsers घोषित करने के लिए की जरूरत है। मुझे पता है कि यह really supported नहीं है, लेकिन क्या कोई कामकाज या विकल्प हैं?
संपादित करें: त्रुटि संदेश मैं हो रही है:
$ prog db --version
# works fine
$ prog --version
usage: ....
prog: error: too few arguments
ध्यान दें कि हम इस बुनियादी सुविधा 2009 – yac
के बाद से मैं अंतर्निहित तर्क पार्सर के बजाय docopt का उपयोग प्रारंभ कर के लिए प्रतीक्षा करें। यह "क्रियाओं", उर्फ "क्रियाओं" के साथ या बिना मिश्रित उपयोग का समर्थन करता है। http://docopt.org/ –