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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
深入浅出分析Python装饰器用法
Jul 28 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
python实现多线程网页下载器
Apr 15 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
python线程定时器Timer实现原理解析
Nov 30 Python
Python Numpy,mask图像的生成详解
Feb 19 Python
手把手教你用Django执行原生SQL的方法
Feb 18 Python
python 求两个向量的顺时针夹角操作
Mar 04 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 $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
php中stream(流)的用法
2014/03/25 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
js输出列表实现代码
2010/09/12 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
django进阶之cookie和session的使用示例
2018/08/17 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
python 如何停止一个死循环的线程
2020/11/24 Python
利用python绘制正态分布曲线
2021/01/04 Python
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
自我反省检讨书
2014/01/23 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
超市创意活动方案
2014/08/15 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
经济纠纷起诉状
2015/05/20 职场文书
茶花女读书笔记
2015/06/29 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
教师师德承诺书2016
2016/03/25 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS