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中xrange用法分析
Apr 15 Python
Python实现Linux中的du命令
Jun 12 Python
python获取url的返回信息方法
Dec 17 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
python中的global关键字的使用方法
Aug 20 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
Python使用pdb调试代码的技巧
May 03 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 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
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
很可爱的输入框
2008/08/03 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
答题辅助python代码实现
2018/01/16 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
公司成立感言
2014/01/11 职场文书
校园安全教育广播稿
2014/02/17 职场文书
群众路线党课主持词
2014/04/01 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
公积金接收函格式
2015/01/30 职场文书
年度考核个人总结
2015/03/06 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
阿甘正传观后感
2015/06/01 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书