我需要根据另一个参数指定命令行参数。 因此,第一个指定的参数应指定操作,并指定该操作的参数。
python test.py create -d what -s size -t type
python test.py delete -d what -a now
python test.py status -x something
是否有可以轻松完成的框架/库?
到目前为止,我已查看argparse
,但无法找到可以执行此操作的任何内容?
答案 0 :(得分:2)
问题在于argparse
绝对是巨大的,我想这就是为什么你不能轻易找到它,但如果你已经阅读了整个文档(或者知道要查看的术语)因为你会发现subcommands的概念可能会达到你想要做的。这是一个非常简单的例子:
import argparse
parser = argparse.ArgumentParser(prog='PROG')
subparsers = parser.add_subparsers(dest='command', help='sub-command help')
parser_create = subparsers.add_parser('create')
parser_create.add_argument('-d')
parser_create.add_argument('-s')
parser_create.add_argument('-t')
parser_delete = subparsers.add_parser('delete')
parser_delete.add_argument('-d')
parser_delete.add_argument('-a')
parser_status = subparsers.add_parser('status')
parser_status.add_argument('-x')
一个简单的用法:
>>> p = parser.parse_args(['create', '-d', 'what', '-s', 'size', '-t', 'type'])
>>> p.command
'create'
>>> p.d
'what'
>>> p = parser.parse_args(['delete', '-d', 'what', '-a' 'now'])
>>> p.command
'delete'
>>> p.a
'now'
当然,请查看文档中的所有详细信息,例如使用dest
为其提供更有意义的名称(您可以在示例中看到与add_subparsers
调用一起使用)。