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

Kai*_*Kai 14 python import arguments argparse

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

python manage.py import --mode archive
Run Code Online (Sandbox Code Playgroud)

哪里--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'
        )
Run Code Online (Sandbox Code Playgroud)

但我收到了错误:

TypeError: 'required' is an invalid argument for positionals
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 19

您创建了一个位置参数(--名称前没有选项).始终需要位置参数.你不能使用required=True这些选项,只需删除required.放下它default; 必需的参数不能有默认值(它永远不会被使用):

parser.add_argument('archive',
    help='Make import archive events'
)
Run Code Online (Sandbox Code Playgroud)

如果您打算archive成为命令行开关,请--archive改用.

  • 请注意,尽管它们始终是必需的,但可以使用“nargs”将它们定义为空。请参阅 /sf/ask/313605281/ 。 (4认同)