当前位置: 首页 > news >正文

python使用argparse解析命令行,如何正确传入科学计数法形式的浮点数

python使用argparse解析命令行,如何正确传入科学计数法形式的浮点数

argparse是一个很好用的python命令行解析工具,我们通常的传参习惯为,python script.py -flag1 value1 -flag2 value2 ...,即每个参数标识符后跟着参数的值,用空格隔开。然而在传入科学计数法表示的浮点类型参数时,可能会出错——究其原因,是科学计数法中包含了+-号,影响对数字类型的解析。

例程

下面给出一段代码,接受-na/-nb/-nc三个浮点数:

'''
Test passing scientific float number as parameters to argparse
'''import argparseif __name__=='__main__':parser = argparse.ArgumentParser()parser.add_argument("-na", type=float, default=0.0)parser.add_argument("-nb", type=float, default=0.0)parser.add_argument("-nc", type=float, default=0.0)args=parser.parse_args()print(args)

将这段代码保存为test_argparse.py文件。

传入普通浮点数,没有任何问题

在命令行执行如下命令,试图传入89.655、9.2113、-10.2三个浮点数 :

>python test_argparse.py -na 89.655 -nb 9.2113 -nc -10.2

输出结果为:

Namespace(na=89.655, nb=9.2113, nc=-10.2)

一切正常,没有问题。如果改用科学计数法,则会报错。错误的命令行传参形式

错误的传参形式

当改用科学计数法形式传入浮点数时:

python test_argparse.py -na -8.9655e+1 -nb -9.2113 -nc -1.02e+1

报错为:

usage: test_argparse.py [-h] [-na NA] [-nb NB] [-nc NC]
test_argparse.py: error: argument -na: expected one argument

正确的方式

使用等号“=”连接参数和科学计数法表示的数值:

python test_argparse.py -na=-8.9655e+1 -nb -9.2113 -nc=-1.02e+1

输出结果为:

Namespace(na=-89.655, nb=-9.2113, nc=-10.2)


http://www.mrgr.cn/news/31214.html

相关文章:

  • Unsupervised Domain Adaptation by Backpropagation
  • 十三 系统架构设计(考点篇)试题
  • 工程师 - .NET程序反编译器
  • SQLiteHelper
  • 视频单目标跟踪研究
  • 踩坑记录:adb修改settings数据库ContentObserver无回调
  • 基于存内计算架构的模型部署与映射优化
  • 【洛谷】P1313 [NOIP2011 提高组] 计算系数 的题解
  • MySQL —— 索引
  • mysql表逆向实体类
  • 大气网格化精细化监管监测系统
  • API 接口接入前:遵循标准流程与规范的注意事项
  • 云计算课程作业1
  • EC Shop安装指南 [ Apache PHP Mysql ]
  • CSP-J2024全真模拟题 阅读程序题3+程序填空题
  • OJ 旋转图像
  • postgresql gcc编译选项解释
  • Java集成gdal 处理解析tiff和shp数据
  • 大模型的实践应用30-大模型训练和推理中分布式核心技术的应用
  • iftop流量监控工具