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调用C语言开发的共享库方法实例
Mar 18 Python
Python中的super()方法使用简介
Aug 14 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
Python做简单的字符串匹配详解
Mar 21 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
pandas 时间格式转换的实现
Jul 06 Python
详解Python 字符串相似性的几种度量方法
Aug 29 Python
使用Tkinter制作信息提示框
Feb 18 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python中相见恨晚的技巧
Apr 13 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
完美的php分页类
2017/10/24 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
javascript中Function类型详解
2015/04/28 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python Logging 日志记录入门学习
2018/06/02 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
python 实现绘制整齐的表格
2019/11/18 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
药学专业大学生自荐信
2013/09/28 职场文书
英文导游欢迎词
2014/01/11 职场文书
社区消防工作实施方案
2014/03/21 职场文书