当前位置: 首页 > 后端技术 > Python

最全总结-说说Python命令行参数化的几种方法!_0

时间:2023-03-26 15:25:52 Python

1。前言在日常编写Python脚本的过程中,我们经常需要结合命令行参数传入一些可变参数,使项目更加灵活方便。在本文中,我将列出4种构建Python命令行参数的方法。它们是:内置sys.argv模块内置argparse模块内置getopt模块第三方依赖库click2。sys.argv构建命令行参数最简单最常用的方法是使用内置的“sys.argv”模块,即参数以有序列表的形式传入,所以传递参数的顺序一定要固定用过的。因此,该方法适用于参数数量较少、场景固定的项目。importsysif__name__=='__main__':#获取参数列表#注:sys.argv[0]代表第一个参数,即:脚本名"1_sys.argv.py"#其他参数列表args=sys.argv[1:]#参数个数args_length=len(sys.argv)ifsys.argvelse0print("排除运行主文件参数,其他参数列表为:",args)print("参数总数:",args_length)#使用#python31_sys.argv.pyarg1arg2#排除运行主文件参数,其他参数列表为:[arg1,arg1]#参数总数:3argv”在脚本中,第一个参数代表脚本的主文件名。argparse模块可以轻松编写友好的命令行参数脚本,并且可以在用户向程序传递无效参数时自动生成帮助手册并抛出明确的错误信息。官方文档:https://docs。python.org/zh-cn...使用它来构建命令行参数包括3个步骤:构建参数解析对象添加参数添加参数解析参数3-1构建命令行参数解析对象importargparse...#build命令行参数解析对象parser=argparse.ArgumentParser(description='命令行参数')...3-2添加命令行参数时需要指出的是--arg1用于指定参数名,-a1表示dest目标变量值(简写)...#设置3个参数#参数1:arg1,整数,不需要传入参数#参数2:arg2,字符串,可选参数,包含默认值"xag"#参数3:arg3,字符串类型,parser.add_argument('--arg1','-a1',type=int,help='参数1,??非必参')parser.add_argument('--arg2','-a2',type=str,help='参数2,非必参,包括默认值',default='xag')parser.add_argument('--arg3','-a3',type=str,help='parameter3,requiredparameter',required=True)...3-3解析出参数值。..#解析参数,获取所有命令行参数(Namespace),然后将其转化为字典args=vars(parser.parse_args())#获取所有参数print("Allcommandlineparametersare:")forkeyinargs:print(f"命令行参数名:{key},参数值:{args[key]}")...使用时,我们可以通过“-h/--help”命令参数查看帮助文档#查看命令行参数帮助文档python32_argparse.py--help#或python32_argparse.py-h上面添加的3个参数,参数arg1和arg2不必传值,arg3必须传值,参数arg2指定默认值\#参数arg3是必须的,参数arg1和参数arg2不是必须的,参数arg2设置为默认值.py-a3123所有命令行参数为:命令行参数名:arg1,参数值:无命令行参数名:arg2,参数值:xag命令行参数名:arg3,parametervalue:123#传入参数arg1,arg3xingag@xingagdeMacBook-Proargs%python32_argparse.py-a1111-a3123所有命令行参数为:命令行参数名:arg1,参数值:111命令行参数名:arg2,参数值:xag命令行参数名:arg3,参数值:123#传入参数arg1,arg2,arg3xingag@xingagdeMacBook-Proargs%python32_argparse.py-a1111-a2222-a3123所有命令行参数为:命令行参数名:arg1,参数值:111命令行参数名:arg2,参数值:222命令行参数名:arg3,参数值:1234getoptgetopt是Python内置的标准模块,它可以与sys组合。argv模块直接解析脚本运行参数,格式为:getopt(args,shortopts,longopts=[])其中args参数列表可以通过sys.argv获取,可以参考上面shortopts短参数组成的字符串定义短参数,如果参数有值,需要在短参数后面加上“:”符号。参数传递方式:-n23longoptslongparameterlist定义长参数列表时,如果某个参数有值,需要在短参数后面加上“=”符号参数传递方式:--port8080这里取以传入的数据库连接参数(参数包括ip、用户名、密码、数据库名)为例进行说明脚本文件名#opts:包含所有选项及其输入值的元组列表#args:去除有用输入后的剩余部分opts,args=getopt(sys.argv[1:],'i:u:p:d:',['ip=','user=','pwd=','db='])#获取参数值#短参数#python34_getopt.py-i127.0.0.1-uroot-p123456-dmysqldb#长参数#python34_getopt.py--ip127.0.0.1-uroot-p123456-dmysqldbip_pre=[item[1]foriteminoptsifitem[0]in('-i','--ip')]ip=ip_pre[0]iflen(ip_pre)>0elseNoneprint("parameterip:",ip)user_pre=[item[1]foriteminoptsifitem[0]in('-u','--user')]user=user_pre[0]iflen(user_pre)>0elseNoneprint("parameteruser:",user)pwd_pre=[item[1]foriteminoptsifitem[0]in('-p','--pwd')]pwd=pwd_pre[0]iflen(pwd_pre)>0elseNoneprint("parameterpwd:",pwd)db_pre=[item[1]foriteminoptsifitem[0]in('-d','--db')]db=db_pre[0]iflen(db_pre)>0elseNoneprint("parameterdb:",db)在运行脚本时,我们可以使用“短参数”或“长参数”的形式传递\#test#短参数python34_getopt.py-i127.0.0.1-uroot-p123456-dmysqldb#长参数python34_getopt.py--ip127.0.0.1--userroot--pwd123456--dbmysqldb5.click作为第三方依赖库,封装了大量命令行工具的方法,可以很方便的实现t命令行参数\项目地址:https://pypi.org/project/click/首先我们需要安装依赖库clickimportclick#安装依赖#pip3install-Uclick@click.command()@click。选项('--arg1',default='111',help='parameterarg1,defaultvalueis"111"')@click.option('--arg2',type=int,help='parameterarg2')@click.option('--arg3',type=str,help='parameterarg3')defstart(arg1,arg2,arg3):"""根据参数arg1、参数arg2、参数arg3运行项目:paramarg1::paramarg2::paramarg3::return:"""print("参数arg1值为:",arg1)print("参数arg2值为:",arg2)print("参数arg3值为:",arg3)if__name__=='__main__':start()然后,在主运行函数上通过装饰器配置参数编写脚本时,只需要根据参数设置传递相应的值即可#不包括参数xingag@xingagdeMacBook-Proargs%python33_click.pyThevalueofparameterarg1is:111parameterarg2valueis:Noneparameterarg3valueis:None#parametervalueincludedarg1xingag@xingagdeMacBook-Proargs%python33_click.py--arg1测试1参数arg1value:test1parameterarg2value:Noneparameterparameterarg3value:None#包含参数arg1,arg2#注意:arg2的参数类型为整型,传入的参数必须转为整型,否则会报错xingag@xingagdeMacBook-Proargs%python33_click.py--arg1test1--arg2222Parameterarg1value:test1parameterarg2value:222parameterarg3value:None#包含参数arg1,arg2,arg3xingag@xingagdeMacBook-Proargs%python33_click.py--arg1test1--arg2222--arg3test3参数arg1值:test1参数arg2值:222参数arg3值:test36。最后通过实例讲解Python的实现命令行参数的四种常用方式对于一些简单的自用和不太正式的场景,个人认为可以使用sys.argv模块快速构建命令行参数;而对于一些参数较多且面向用户的正式生产环境,建议使用argparse模块或者点击dependencies创建命令行参数以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发“J”也能收到很多学习信息或者去编程学习网了解更多编程技术知识。