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的Django框架上部署ORM库的教程
Apr 20 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
Python使用pyh生成HTML文档的方法示例
Mar 10 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
详解Python 正则表达式模块
Nov 05 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
什么是python的id函数
Jun 11 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 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 分页原理分析,大家可以看看
2009/12/21 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
php可变长参数处理函数详解
2017/02/22 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
使用JavaScript破解web
2018/09/28 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
应届医学毕业生求职信分享
2013/12/02 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
预备党员公开承诺书
2014/05/28 职场文书
赔偿协议书范本
2014/09/12 职场文书
文艺晚会开场白
2015/05/29 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js