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 相关文章推荐
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
python中reader的next用法
Jul 24 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
简单了解python高阶函数map/reduce
Jun 28 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
解决Python使用列表副本的问题
Dec 19 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 02 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
鼠标图片振动代码
2006/07/06 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python telnet登陆功能实现代码
2020/04/16 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
游戏商店:Eneba
2020/04/25 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
西式婚礼证婚词
2014/01/12 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
警校毕业生自我评价
2014/04/06 职场文书
日语系毕业求职信
2014/07/27 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL