Python命令行参数定义及需要注意的地方


Posted in Python onNovember 30, 2020

在命令行中运行python代码是很常见的,下面介绍如何定义命令后面跟的参数。

1  常规用法

Python代码中主要使用下面几行代码来定义并获取需要在命令行中赋值的参数:

import argparse 
 
parser = argparse.ArgumentParser("Description.") # ————1————
parser.add_argument('--test1', type=str, default="1", help="Test1 help.") # ————2————
parser.add_argument('--test2', type=float, default=2.1, help="Test2 help.") # ————2————
args = parser.parse_args() # ————3————

print(args)
test1, test2 = args.test1, args.test2 # ————4———— 
print(type(test1), test1, test1 + " add test") 
print(type(test2), test2, test2 + 100)

注释:

1、获取外部参数对象实例。可以传入字符串来描述总体的外部参数。

2、定义外部参数,可以多次调用来定义多个外部参数。函数的第一个参数是外部参数的名称,建议以两个减号开头,中间不要使用数字字母下划线以外的符号,否则容易出错。type是你希望外部参数传入后转换的类型,比如--test1定义为str,即使命令行传参不添加引号,函数也将它转换为字符串(当然不加引号传字符串就不能用空格了)。而--test2是float,即使命令行传参带了引号,只要能转换为数字,函数都能转换为float类型。default是外部参数的默认值。如果命令行不对外部参数赋值而使用默认值,函数不会对你定义的默认值进行type上的转换,所以default最好直接定义为type指定的类型(比如--test1的default定义为"1"而不是1)。help传入对当前外部参数的描述,命令行中使用--help输出的就是这个。 

3、分析获取的外部参数。传出的是一个命名空间,类似于字典,但使用属性的方式而不是key索引来获取命名对应的外部参数值。

4、以获取属性的方式获取外部参数。

需要注意的是,外部参数的定义必须写在获取外部参数之前。也就是说,parser.add_argument()要写在parser.parse_args()之前,否则外部参数无法被命令行捕获。另外,如果代码中没有parser.parse_args(),命令行就不能传参。

用命令行执行以上代码,命令与输出如下(以上代码保存为test.py):

Python命令行参数定义及需要注意的地方

可以看出,故意以数字和字符串的方式分别对字符串和float类型的外部参数赋值,函数都能正确地转换并正确地参与运算。

使用默认值时输出如下:

Python命令行参数定义及需要注意的地方

2  注意事项 

通过以上的实验,argparse库似乎能将外部参数正确转换为各种类型,只要能转换。下面来实验是否能传入一个numpy数组。代码如下:

import numpy as np
import argparse 
 
parser = argparse.ArgumentParser() 
parser.add_argument('--array', type=np.array, default=np.array([1,2])) 
args = parser.parse_args() 

print(args) 
array = args.array
print(type(array))
print(array)
print(array + 1)

当使用默认值时:

Python命令行参数定义及需要注意的地方

运行正确,但当我们意图传入外部参数时:

Python命令行参数定义及需要注意的地方

尽管传入的[1,2]被转换为numpy.ndarray类型,它却并不能参与运算。所以,并不是所有的类型都能在命令行中传入的。

以上就是Python命令行参数定义及需要注意的地方的详细内容,更多关于Python命令行参数的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python写的Socks5协议代理服务器
Aug 06 Python
python中尾递归用法实例详解
Apr 28 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
python验证身份证信息实例代码
May 06 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
无需压缩软件,用python帮你操作压缩包
Aug 17 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 #Python
Python基于Faker假数据构造库
Nov 30 #Python
python爬虫调度器用法及实例代码
Nov 30 #Python
python爬虫中url管理器去重操作实例
Nov 30 #Python
python爬虫中的url下载器用法详解
Nov 30 #Python
Python接口自动化测试框架运行原理及流程
Nov 30 #Python
Django数据模型中on_delete使用详解
Nov 30 #Python
You might like
分享一则PHP定义函数代码
2015/02/26 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
js模拟点击事件实现代码
2012/11/06 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
python求crc32值的方法
2014/10/05 Python
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
详解python中的文件与目录操作
2017/07/11 Python
python中import reload __import__的区别详解
2017/10/16 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
python怎么调用自己的函数
2020/07/01 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
岗位职责的含义
2013/11/17 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书