第一个Python argparse位置参数只能是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'

最新更新