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()
当我在它前面放置另一个默认类型 str
的 parser.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'
我假设添加到 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()
当我在它前面放置另一个默认类型 str
的 parser.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'