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在命令行下使用google翻译(带语音)
Jan 16 Python
python基础教程之对象和类的实际运用
Aug 29 Python
Python实现从脚本里运行scrapy的方法
Apr 07 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
分析Python读取文件时的路径问题
Feb 11 Python
遗传算法python版
Mar 19 Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 Python
vue常用指令代码实例总结
Mar 16 Python
详解python变量与数据类型
Aug 25 Python
写好Python代码的几条重要技巧
May 21 Python
如何使用PyCharm及常用配置详解
Jun 03 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
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
php异常处理方法实例汇总
2015/06/24 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
php文件包含的几种方式总结
2019/09/19 PHP
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
python实现查询IP地址所在地
2015/03/29 Python
python线程、进程和协程详解
2016/07/19 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
国外软件测试工程师面试题
2016/12/09 面试题
软件项目开发计划书
2014/05/01 职场文书
护理目标管理责任书
2014/07/25 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
2019教师的学习计划
2019/06/25 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
python数字图像处理实现图像的形变与缩放
2022/06/28 Python