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

i34xakig  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(139)

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

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
pieyvz9o

pieyvz9o1#

您创建了一个位置参数(名称前面没有--选项)。位置参数是 * 始终 * 必需的。您不能使用required=True作为此类选项,只需删除required即可。把default也扔掉; required参数不能有默认值(它永远不会被使用):

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

如果您想让archive成为一个命令行开关,请使用--archive

2wnc66cl

2wnc66cl2#

我认为--mode archive的意思应该是“模式是存档”,换句话说,archive--mode参数的 * 值 *,而不是一个单独的参数。如果是的话,它必须是--archive,这不是你想要的。
只需要省略archive的定义。

相关问题