【问题标题】:argparse "compulsory" optional argumentsargparse“强制”可选参数
【发布时间】:2014-04-15 12:45:51
【问题描述】:

Python 的argparse 模块具有所谓的“可选”参数。默认情况下,名称以--- 开头的所有参数都是可选的。通常,强制参数是位置参数,因此在运行程序时,它们没有明确命名

例如,在一个脚本中:

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

调用看起来像:

$ hello-world czech

有时通过名称传递强制参数可能会更好(例如,脚本调用更易于阅读),但仍然是强制的。即

$ hello-world --use-lang czech

如何做到这一点?在argparse 文档中,命名参数被称为“可选”,这使得它们听起来不能是强制性的。有没有办法强制要求?

【问题讨论】:

标签: python argparse


【解决方案1】:

根据规范文档,declare 'optional' arguments that are compulsory 是可能的。您使用 add_argumentrequired 命名参数:

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

【讨论】:

  • 通常情况下,您可以通过为选项分配合适的默认值,轻松地将“必需”选项再次变为可选。
  • @user2864740 - 我只是想记录一下,因为在弄清楚之前我必须花一些时间阅读官方文档。我不写博客,无论如何,SO 是一个比私人博客更好的论坛。我经常在问谷歌之前搜索 SO。
  • 文档已经记录了这一点;阅读文档/API 是开发人员的责任。同样,我不反对自我回答,但给社区时间。 (或者去开始一个博客,这是写/发泄/重新记录这些事情的好方法!)
  • @user2864740 - 我只是关注this suggestion。答案现在是一个社区维基。不幸的是,我现在似乎无法将问题变成一个问题。如果您认为这不是一个很好的问题,因为它已经记录在案,您可能想对该问题投反对票。我可以删除不合格的问题。
  • Python 开发人员对“可选参数”这个名称以及是否可以改进存在一些争论。 bugs.python.org/issue9694。在 UNIX 世界中,使用 -,-- 标志 optionsoptionals 调用参数的历史由来已久。
猜你喜欢
  • 2018-04-29
  • 2012-08-14
  • 1970-01-01
  • 2014-09-09
  • 2011-05-27
  • 2017-11-28
  • 2019-11-17
  • 2021-01-07
相关资源
最近更新 更多