【问题标题】:Can first Python argparse positional argument only be of type str?第一个 Python argparse 位置参数只能是 str 类型吗?
【发布时间】:2021-12-21 12:10:13
【问题描述】:

我是否正确假设添加到argparse.ArgumentParser() 实例的第一个强制位置参数只能是str 类型?

当我将其设置为 float(或 int)并在 shell 中运行脚本时,我收到 invalid float value 错误。不管我是真的传入float 还是调用-h 寻求帮助,都应该跳过参数输入直接跳转到帮助部分。

import argparse

parser = argparse.ArgumentParser(
    prog="add-expense"
)

parser.add_argument(
    "Amount",
    type=float
)

args = parser.parse_args()

当我在其前面放置另一个默认类型为strparser.add_argument() 时,一切正常。

【问题讨论】:

    标签: python argparse


    【解决方案1】:

    加上一个

    print(args)
    

    您的脚本运行良好:

    1013:~/mypy$ python3 stack69887099.py -h
    usage: add-expense [-h] Amount
    
    positional arguments:
      Amount
    
    optional arguments:
      -h, --help  show this help message and exit
    1013:~/mypy$ python3 stack69887099.py 1.232
    Namespace(Amount=1.232)
    1013:~/mypy$ python3 stack69887099.py test
    usage: add-expense [-h] Amount
    add-expense: error: argument Amount: invalid float value: 'test'
    

    【讨论】:

      猜你喜欢
      • 2023-02-26
      • 2011-07-19
      • 2016-01-08
      • 1970-01-01
      • 2015-07-25
      • 2011-05-27
      • 2012-01-29
      • 1970-01-01
      • 2018-04-29
      相关资源
      最近更新 更多