【问题标题】:Argparse to have type as choiceArgparse 有类型作为选择
【发布时间】:2015-03-03 13:04:24
【问题描述】:

我有一些以 optparse 作为参数库的旧代码。它具有类型作为参数之一的选择

type = "choice"

我正在尝试将我的代码转换为具有 argparse。我应该在类型中输入什么?如果我添加 type = choice 它会引发错误:

NameError: global name 'choice' is not defined

如果我使用 argparse,这里的 type 值应该是什么?

【问题讨论】:

    标签: python python-2.7 argparse optparse


    【解决方案1】:

    optparse 中,choice 类型只是string 的一种特殊形式。来自optparse documenattion

    "choice" 选项是"string" 选项的子类型。 choices 选项属性(字符串序列)定义了允许的选项参数集。

    您不需要在argparse 中将其指定为类型;您需要提供的只是选择。完全删除 type 参数,或者如果您想明确,请将其设置为 str

    对于argparse,另见choices documentation;这比optparse 灵活得多,因为这也允许选择是字符串以外的类型。

    【讨论】:

    • 但是当我添加 str 或删除类型时,我运行我的代码时会这样说: python try1.py --help 然后它会打印特定于该参数的帮助信息以及选项。当我使用 optparse 时,我没有遇到这样的问题,我过去只获得特定于该参数的帮助信息。
    • @wannaC:我不确定你在这里问什么。 argparse 的工作方式不同,它永远不会产生完全相同的输出。
    • @wannaC: 这听起来也是一个不同的问题; type 参数的问题已经解决了,不是吗?
    • metavar 参数替换了帮助显示中的choices 列表。
    • @hpaulj:对,有一个simple fix
    猜你喜欢
    • 2017-11-03
    • 2012-01-27
    • 2020-10-26
    • 1970-01-01
    • 2018-06-29
    • 2015-11-16
    • 2015-12-11
    • 1970-01-01
    相关资源
    最近更新 更多