first Python argparse 位置参数只能是 str 类型吗?

Can first Python argparse positional argument only be of type str?

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

当我将它设置为 float(或 int)和 运行 shell 中的脚本时,我得到一个 无效的浮点值 错误。我不管是真的传入一个float还是调用-h寻求帮助,应该跳过参数输入直接跳转到帮助部分

import argparse

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

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

args = parser.parse_args()

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

加上一个

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'