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的dict,set,list,tuple应用详解
Jul 24 Python
python连接数据库的方法
Oct 19 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
python匹配两个短语之间的字符实例
Dec 25 Python
python中dict使用方法详解
Jul 17 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
python 实现单通道转3通道
Dec 03 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
python如何处理程序无法打开
Jun 16 Python
Python中的特殊方法以及应用详解
Sep 20 Python
pytorch中的model=model.to(device)使用说明
May 24 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
基于mysql的bbs设计(五)
2006/10/09 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
最简单的js图片切换效果实现代码
2011/09/24 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
详解react-redux插件入门
2018/04/19 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
python生成excel的实例代码
2017/11/08 Python
Python之用户输入的实例
2018/06/22 Python
详解Python3的TFTP文件传输
2018/06/26 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
Python 图片处理库exifread详解
2021/02/25 Python
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
波兰购物网站:MALL.PL
2019/05/01 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
好听的队名和口号
2014/06/09 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
团拜会主持词
2015/07/04 职场文书
python如何将mat文件转为png
2022/07/15 Python