python解析命令行参数的三种方法详解
这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
python解析命令行参数主要有三种方法:sys.argv、argparse解析、getopt解析
方法一:sys.argv——命令行执行:pythontest_命令行传参.py1,2,31000
#test_命令行传参.py importsys defpara_input(): print(len(sys.argv))#参数序列的长度,此时所有参数存放在一个list之中 iflen(sys.argv)<2: sys.exit("pythonerror") script_name=sys.argv[0]#第一个参数指的是脚本名称 param_first=sys.argv[1]#第二个参数,此时也是一个str列表 param_second=sys.argv[2]#第三个参数 print(script_name) print(type(script_name)) print(param_first) print(type(param_first)) sss=param_first.split(',') print(type(sss)) print(sss[0])#传进来的都是默认str print(sss[1]) print(sss[2]) print(param_second) print(type(param_second)) print(script_name,param_first,param_second) if__name__=="__main__": para_input()
方法二:argparse解析——命令行执行:pythontest_命令行传参.py-nPeter或者pythontest_命令行传参.py-nPeter-d20191120
#test_命令行传参.py importargparse parser=argparse.ArgumentParser('传入参数:***.py') parser.add_argument('-n','--name',default='Jack') parser.add_argument('-d','--date',default='20191128') args=parser.parse_args() print(args) print(type(args)) name_=args.name date_=args.date print(type(name_)) print(type(date_)) print('thepeople%ssaidthatthedateis%s'%(name_,date_))
方法三:getopt解析——命令行执行:pythontest_命令行传参.py-f游泳-p20191130或者pythontest_命令行传参.py--functionname=游泳-p20191130或者pythontest_命令行传参.py--functionname=游泳--partdate=20191130
格式为:getopt.getopt(argv,options[,long_options])
该方法有两种传参形式:短('-')和长('--')
options表示的是短选项,传入时需用(例如:-f)形式传入参数,其中,有冒号(:)表示-f之后必须传入值构成(例如:-fvalue),没有冒号则不用。
[,long_options]表示的是长选项,传入时需用(例如:--f)形式传入参数,其中,有等于号(=)表示--f之后必须传入值构成(例如:--f=value),没有等于号则不用。
使用时可以长短混合,比如多个参数,有的用长选项,有的用短选项;在程序中设置默认值之后,还可以不用传全部参数
importgetopt importsys defget_args_func(argv): functionname='拍照'#默认值 partdate='20191128' try: opts,args=getopt.getopt(argv,"hf:p:",["help","functionname=","partdate="]) #表示参数选项有:-h,-f,-p,--help,--functionname,--partdate,它们相互对应;该方法的返回值有两个元素:第一个是(opt,value)元组的列表,第二个是一般参数列表,包含那些没有'-'或'--'的参数 exceptgetopt.GetoptError: print('Error:***.py-f-p ') print('or:***.py--functionname= --partdate= ') sys.exit(2) foropt,arginopts:#依次获取列表中的元组项 ifoptin("-h","--help"): print('***.py-f -p ') print('or:***.py--functionname= --partdate= ') sys.exit() elifoptin("-f","--functionname"): functionname=arg elifoptin("-p","--partdate"): partdate=arg print('-----------------------------------------------------------------------') print(opts)#元组构成的列表 print(args)#args指的是不用'-'或'--'传递的参数,这里没有传递,所以为空 print('functionname为:',functionname) print('partdate为:',partdate) if__name__=='__main__': get_args_func(sys.argv[1:])#因为sys.argv[0]是脚本名称
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。