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简单实现基数排序算法
May 16 Python
开源Web应用框架Django图文教程
Mar 09 Python
python利用Guetzli批量压缩图片
Mar 23 Python
Python正则捕获操作示例
Aug 19 Python
Python打印“菱形”星号代码方法
Feb 05 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
python爬虫租房信息在地图上显示的方法
May 13 Python
django使用admin站点上传图片的实例
Jul 28 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
python实现PolynomialFeatures多项式的方法
Jan 06 Python
Python利用folium实现地图可视化
May 23 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
PHP url 加密解密函数代码
2011/08/26 PHP
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
javascript 数组操作详解
2015/01/29 Javascript
理解JS绑定事件
2016/01/19 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
python字符串Intern机制详解
2019/07/01 Python
Django单元测试工具test client使用详解
2019/08/02 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
办公室助理岗位职责
2013/12/25 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
分公司任命书
2014/06/06 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
争做文明公民倡议书
2014/08/29 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
教师个人发展总结
2015/02/11 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
python实现简单反弹球游戏
2021/04/12 Python
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers