第一个 Python argparse 位置参数只能是 str 类型吗?
Posted
技术标签:
【中文标题】第一个 Python argparse 位置参数只能是 str 类型吗?【英文标题】:Can first Python argparse positional argument only be of type 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()
当我在其前面放置另一个默认类型为str
的parser.add_argument()
时,一切正常。
【问题讨论】:
【参考方案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'
【讨论】:
以上是关于第一个 Python argparse 位置参数只能是 str 类型吗?的主要内容,如果未能解决你的问题,请参考以下文章
子命令中选项的 argparse 冲突解决程序将关键字参数转换为位置参数