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脚本生成Android SALT扰码的方法
Sep 18 Python
python django集成cas验证系统
Jul 14 Python
Python机器学习之SVM支持向量机
Dec 27 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
Flask-Mail用法实例分析
Jul 21 Python
Python中fnmatch模块的使用详情
Nov 30 Python
Python如何调用JS文件中的函数
Aug 16 Python
Python3 sys.argv[ ]用法详解
Oct 24 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
Python time库的时间时钟处理
May 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/10/09 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
javascript实现数独解法
2015/03/14 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
Python中除法使用的注意事项
2014/08/21 Python
简单使用Python自动生成文章
2014/12/25 Python
python制作图片缩略图
2019/04/30 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
python实现横向拼接图片
2020/03/23 Python
python怎么判断素数
2020/07/01 Python
详解如何修改python中字典的键和值
2020/09/29 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
XML文档面试题
2015/08/05 面试题
优秀团支部事迹材料
2014/02/08 职场文书
创建文明学校实施方案
2014/03/11 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
骨干教师考核评语
2014/12/31 职场文书
生死抉择观后感
2015/06/09 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python