使用argparse时,一些子命令需要相同的选项,我用它parents来避免在每个子命令中重复定义它们.
脚本文件名: testarg.py
import argparse
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-H', '--host', default='192.168.122.1')
parser.add_argument('-P', '--port', default='12345')
subparsers = parser.add_subparsers()
# subcommand a
parser_a = subparsers.add_parser('a', parents=[parser])
parser_a.add_argument('-D', '--daemon', action='store_true')
parser_a.add_argument('-L', '--log', default='/tmp/test.log')
# subcommand b
parser_b = subparsers.add_parser('b', parents=[parser])
parser_b.add_argument('-D', '--daemon', action='store_true')
# subcommand c
parser_c = subparsers.add_parser('c', parents=[parser])
args = parser.parse_args()
print args
Run Code Online (Sandbox Code Playgroud)
但是当我运行命令时:
>>>./testarg.py a
usage: testarg.py a [-h] [-H HOST] [-P PORT] [-D] [-L LOG] {a,b,c} ...
testarg.py a: error: too few arguments
Run Code Online (Sandbox Code Playgroud)
期待输出:
>>>./testarg.py a
Namespace(daemon=False, …Run Code Online (Sandbox Code Playgroud) 什么是 vim 命令可以有效地将某些内容放入括号中,然后我可以使用.它来重复它??
例如,data['max']到(data['max'])