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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。