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

问题描述 投票:0回答:2

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

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
python import arguments argparse
2个回答
68
投票

您创建了一个位置参数(名称前面没有

--
选项)。位置参数“总是”是必需的。您不能将 required=True 用于此类选项,只需删除
required
即可。也删除
default
;必需的参数不能有默认值(无论如何都不会使用它):

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

如果您想让 
archive

成为命令行开关,请使用

--archive
代替。
    


2
投票
--mode archive

应该意味着“模式是存档”,换句话说

archive
--mode
参数的 value,而不是单独的参数。如果是的话,那一定是
--archive
,这不是你想要的。

只需省略

archive

的定义即可。

    

© www.soinside.com 2019 - 2024. All rights reserved.