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实现倒计时的示例
Feb 14 Python
Python使用函数默认值实现函数静态变量的方法
Aug 18 Python
进一步了解Python中的XML 工具
Apr 13 Python
python使用nntp读取新闻组内容的方法
May 08 Python
pandas的object对象转时间对象的方法
Apr 11 Python
彻底理解Python中的yield关键字
Apr 01 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python实现BP神经网络回归预测模型
Aug 09 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
Python调用接口合并Excel表代码实例
Mar 31 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
php4的彩蛋
2006/10/09 PHP
php记录日志的实现代码
2011/08/08 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
强制设为首页代码
2006/06/19 Javascript
jquery json 实例代码
2010/12/02 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python基础中所出现的异常报错总结
2016/11/19 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
英文求职信范文
2014/05/23 职场文书
安全生产月宣传标语
2014/10/06 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python