Python 实现命令行工具
Python 做为一个脚本语言,可以方便地写各种工具。当你在服务端、cmd终端要执行某个 .py 文件时。一般都是 python fileName.py 去执行,但是如果我需要输入指定的某些关键参数进行交互时,那该怎么办呢?下面我会介绍两种常用的 Python 命令行工具
一、 sys.argv
sys.argv[0] 是一个从程序外部获取参数的桥梁,参数是列表存储
sys.argv : 命令行参数列表, 通过 list 下标获取参数
len(sys.argv) : 命令行参数长度
这种是最简单也是最直接的方式,实际过程中一般我会用这个方法去判断输入参数的长度作为校验;
二、argparse.ArgumentParser()
官网描述:argparse模块使编写用户友好的命令行界面变得容易。该程序定义了所需的参数,而argparse将找出如何从sys.argv中解析这些参数。argparse模块还会自动生成帮助和使用消息,并在用户为程序提供无效参数时发出错误。
argparse 是Python自带的命令行参数解析包,可以方便地读取命令行参数.参数是以<class 'argparse.Namespace'>存储,可以理解为是一个类对象,通过类的属性获取对应的参数值.
下面讲解一下 ArgumentParser() 的基本关键参数
创建一个ArgumentParser实例,ArgumentParser的参数都为关键字参数。
prog :文件名,默认为sys.argv[0],用来在help信息中描述程序的名称。
usage :描述程序用途的字符串
description :help 信息前显示的信息
epilog :help 信息之后显示的信息
parents :由ArgumentParser对象组成的列表,它们的arguments选项会被包含到新ArgumentParser对象中
formatter_class :help信息输出的格式
prefix_chars :参数前缀,默认为’-‘ (最好不要修改)
fromfile_prefix_chars :前缀字符,放在文件名之前
conflict_handler :解决冲突的策略,默认情况下冲突会发生错误,(最好不要修改)
add_help :是否增加-h/-help选项 (默认为True),一般help信息都是必须的。设为False时,help信息里面不再显示-h –help信息
argument_default: - (default: None)设置一个全局的选项的缺省值,一般每个选项单独设置
添加参数选项 -- add_argument 方法
add_argument() 方法有两种参数,可选参数和位置参数。
>>> parser.add_argument('-t', '-- testType ')
可选参数 , 传参方式可以是 -e argument or --env=argument 两种方式,不传参数不影响,值为None,可以设置 default 参数
>>> parser.add_argument('env')
位置参数必传, 如果传参少了 testType 的话,那么就会报 error: the following arguments are required: env
因为 env 是位置参数,第一次没传参导致报错了,第二次 env 传了参数正常,testType 是可选参数,可以看出第2/3/4次,可选参数,传或者不传都可以,不影响,传参有两种方式:-t dev or --testType=dev .还可以设置具体的默认值,如果没有这种默认为 None.
add_argument() 方法参数介绍参考博客:
name or flags :选项字符串的名字或者列表,例如foo 或者-f, --foo。
action : 在命令行遇到该参数时采取的基本动作类型。
nargs :应该读取的命令行参数数目。
const : 某些action和nargs选项要求的常数值。
default : 如果命令行中没有出现该参数时的默认值。
type : 命令行参数应该被转换成的类型。
choices : 参数可允许的值的一个容器。
required :该命令行选项是否可以省略(只针对可选参数)。
help : 参数的简短描述。
metavar : 参数在帮助信息中的名字。
dest : parse_args()返回的对象要添加的属性名称。
以上就是实际使用过程中的一些常用方法总结,如果有兴趣的小伙伴可以去官方文档了解更多详细的用法,当然如果有疑问也可以给我留言.