【问题标题】:Arg parse not returning floatarg 解析不返回浮点数
【发布时间】:2016-04-03 23:05:00
【问题描述】:

我正在尝试创建一个函数来控制文件的音量。 我不明白为什么会发生这个错误,因为我应该只是返回一个浮点数

parser.add_argument('--volume','-v', default=None, type=float,help='Number  between 0.0 and 1.0 indicating volume level')
    print args.volume

python audio.py -v 0.333338 (terminal input)

    usage: audio.py [-h] [--volume VOLUME] phrase [phrase ...]
            audio.py: error: too few arguments

下面是解析器的初始化

 parser = argparse.ArgumentParser()
    parser.add_argument('--volume','-v', default=None, type=float,help='Number  between 0.0 and 1.0 indicating volume level')
    parser.add_argument('phrase', nargs='+', help="Audio phrase for interpretation")
    args = parser.parse_args()

【问题讨论】:

  • 你能分享一下你是如何初始化parser的吗?
  • 问题不在于volume 参数。这是phrase 位置参数,您没有告诉我们(但我们可以从用法行推断存在)。
  • 我以为你可以不输入短语
  • nargs='+' 表示 - 需要一个或多个值。 '*' 表示零个或多个。

标签: python command-line argparse


【解决方案1】:

usage: audio.py [-h] [--volume VOLUME] phrase [phrase ...]

您缺少phrase 参数:

python audio.py -v 0.333338 some_phrase_here

【讨论】:

    【解决方案2】:

    使用 python 2.7.10 并且此代码 sn-p 工作正常:

    import argparse
    
    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('--volume','-v', default=None, type=float,help='Number between 0.0 and 1.0 indicating volume level')
    args = parser.parse_args()
    print args.volume
    

    尝试复制粘贴相同的 sn-p 并告诉我它是否有效。 我的输出如下所示:

    :-/temp$ python audio.py -v 0.333338
    0.333338
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多