'required'是python命令中positionals的无效参数

时间:2017-07-13 10:49:33

标签: python import arguments argparse

我想用必需参数和可选参数实现导入功能,以这种方式运行:

python manage.py import --mode archive

其中--mode是必需的,archive也是。

我正在使用argparse库。

class Command(BaseCommand):
    help = 'Import'

    def add_arguments(self, parser):
        parser.add_argument('--mode',
            required=True,
        )
        parser.add_argument('archive',
            required=True,
            default=False,
            help='Make import archive events'
        )

但我收到了错误:

TypeError: 'required' is an invalid argument for positionals

2 个答案:

答案 0 :(得分:17)

您创建了一个位置参数(名称前面没有--选项)。位置参数始终是必需的。您无法使用required=True获取此类选项,只需删除required即可。放弃default;必需的参数不能具有默认值(它永远不会被使用):

parser.add_argument('archive',
    help='Make import archive events'
)

如果您希望archive成为命令行切换,请改用--archive

答案 1 :(得分:2)

我认为--mode archive应该表示“模式是归档”,换句话说archive--mode参数的,而不是单独的论点。如果是,那就必须是--archive而不是你想要的。

请忽略archive

的定义