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 Web框架Pylons中使用MongoDB的例子
Dec 03 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
python交互式图形编程实例(二)
Nov 17 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
pandas 实现将NaN转换为None
May 14 Python
python自动计算图像数据集的RGB均值
Jun 18 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
合作指挥官:孟斯克
2020/03/16 星际争霸
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php类中private属性继承问题分析
2012/11/01 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
php格式文件打开的四种方法
2018/02/24 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
js几个验证函数代码
2010/03/25 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
jquery使用经验小结
2015/05/20 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
下载给定网页上图片的方法
2014/02/18 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
python批量赋值操作实例
2018/10/22 Python
Django 路由控制的实现代码
2018/11/08 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
JAVA中运算符的分类及举例
2015/09/12 面试题
区级文明单位申报材料
2014/05/15 职场文书
后备干部培训方案
2014/05/22 职场文书
优秀毕业生求职信
2014/06/05 职场文书
医院搬迁方案
2014/06/14 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
公司开业主持词
2015/07/02 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript
解析MySQL索引的作用
2022/03/03 MySQL