argparse “强制性” 可选参数

43 投票
1 回答
25345 浏览
提问于 2025-04-17 21:50

Python的argparse模块有一种叫做“可选参数”的东西。所有以---开头的参数默认都是可选的。通常,必须提供的参数是位置参数,所以在运行程序时,它们不会被明确地命名

举个例子,如果在一个脚本中有:

parser.add_argument('language', help="Output language")

那么调用这个脚本的方式可能是这样的:

$ hello-world czech

有时候,把一个必须的参数通过名字传入会更好(比如这样写的脚本更容易理解),但这个参数依然是必须的。也就是说:

$ hello-world --use-lang czech

那么怎么做到这一点呢?在argparse的文档中,命名参数被称为“可选”的,这听起来好像它们不能是必须的。有没有办法让它们变成必须的呢?

1 个回答

55

根据官方文档,你可以声明一些“可选”的参数,但实际上它们是必须提供的。你可以使用 add_argument 函数中的 required 这个参数来做到这一点:

parser.add_argument('--use-lang', required=True, help="Output language")

撰写回答