我使用argcomplete完成命令,并提供以下示例代码:
#!/usr/bin/env python
# PYTHON_ARGCOMPLETE_OK
import argparse
import argcomplete
from argcomplete import warn
def MySubCompleter(prefix, parsed_args, **kwargs):
warn(parsed_args)
return ['1','2']
def MySubSubCompleter(prefix, parsed_args, **kwargs):
warn(parsed_args)
return ['3','4']
parser = argparse.ArgumentParser()
parser.add_argument('--parser')
subparsers = parser.add_subparsers(dest='level1')
subparser = subparsers.add_parser('sub',help='sub')
subparser.add_argument('--subvar',dest='sub').completer = MySubCompleter
subsubparsers = subparser.add_subparsers(dest='level2')
subsubparser = subsubparsers.add_parser('subsub',help='subsub')
subsubparser.add_argument('--subsubvar',dest='subsubvar').completer = MySubSubCompleter
argcomplete.autocomplete(parser)
args = vars(parser.parse_args())
为什么当我执行以下操作时:
$ ./test.py sub subsub --subsubvar
我只看到以下内容:
> Namespace(level1='sub', parser=None)
3 4
所以我无法看到level2 =' subsub'在parsed_args中(参见命名空间)。