argparse “compulsory” optional arguments
python的argparse模块具有所谓的"可选"参数。默认情况下,名称以-或--开头的所有参数都是可选的。通常,强制参数是位置性的,因此在运行程序时,它们不会被显式命名。
例如,在脚本中:
1
| parser.add_argument('language', help="Output language") |
调用如下:
有时通过名称传递强制参数可能更好(例如,脚本调用更容易通过这种方式读取),但仍然是强制的。即
1
| $ hello-world --use-lang czech |
如何做到这一点?命名参数在argparse文档中被称为"可选",这使得它们听起来不像是强制的。有没有办法让它们成为强制性的?
- 然后如何使--help看起来正确:stackoverflow.com/questions/24180527/…
根据Canonical documentation,it is possible to declare optional arguments that are compulsory.你使用required的理由
1
| parser.add_argument('--use-lang', required=True, help="Output language") |
- 至少在自我回答之前稍等一下;我并不反对自我回答,但如果不是真正的征求外部意见,那也可能是一篇博客文章。
- 通常,通过为选项指定适当的默认值,您可以轻松地再次将"必需"选项设置为可选。
- @用户2864740-我只是想把这个记录下来,因为我必须花一些时间阅读官方文档才能弄清楚。我不写博客,不管怎样,一个比私人博客更好的论坛。我经常在问谷歌之前搜索。
- 文档已经记录了这一点;阅读文档/API是开发人员的责任。再说一次,我不反对自我回答,而是给社区时间。(或者去写一篇博客,这是写/发泄/重新记录这些事情的好方法!)
- @用户2864740-我只是按照这个建议。答案现在是社区维基。不幸的是,我现在似乎不能把这个问题变成一个问题。如果你认为这不是一个很好的问题,因为它已经被记录在案了,你可能想否决这个问题。删除不合格的问题我没问题。
- 关于名称"可选参数"以及是否可以改进,Python开发人员之间存在一些争论。bugs.python.org/issue9694。在Unix世界中,使用-,--标记options或optionals调用参数的历史由来已久。