Python argparse模块使用方法解析
这篇文章主要介绍了Pythonargparse模块使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.说明
- argparse模块是python用于解析命令行参数和选项的标准模块。
- 程序定义它需要的参数,然后argparse模块将弄清如何从sys.argv解析出那些参数。
- argparse模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
2.使用流程
使用argparse模块配置命令行参数时,需要以下几步:
importargparse
创建ArgumentParser()对象
调用add_argument()方法添加参数
使用parse_args()解析添加的参数,返回一个命名空间
参数解析完后,进行后续业务逻辑的处理
示例:
importargparse importjson args_list=["keywords","keywords_from_file","prefix_keywords","suffix_keywords", "limit","format","color","color_type","usage_rights","size", "exact_size","aspect_ratio","type","time","time_range","delay","url","single_image", "output_directory","image_directory","no_directory","proxy","similar_images","specific_site", "print_urls","print_size","print_paths","metadata","extract_metadata","socket_timeout", "thumbnail","thumbnail_only","language","prefix","chromedriver","related_images","safe_search","no_numbering", "offset","no_download","save_source","silent_mode","ignore_urls"] defuser_input(): #创建ArgumentParser()对象 config=argparse.ArgumentParser() #调用add_argument()方法添加参数 config.add_argument('-cf','--config_file',help='configfilename',default='',type=str,required=False) config_file_check=config.parse_known_args() object_check=vars(config_file_check[0]) ifobject_check['config_file']!='': records=[] json_file=json.load(open(config_file_check[0].config_file)) forrecordinrange(0,len(json_file['Records'])): arguments={} foriinargs_list: arguments[i]=None forkey,valueinjson_file['Records'][record].items(): arguments[key]=value records.append(arguments) records_count=len(records) else: #Takingcommandlineargumentsfromusers parser=argparse.ArgumentParser() parser.add_argument('-k','--keywords',help='delimitedlistinput',type=str,required=False) parser.add_argument('-kf','--keywords_from_file',help='extractlistofkeywordsfromatextfile',type=str,required=False) parser.add_argument('-sk','--suffix_keywords',help='commaseparatedadditionalwordsaddedaftertomainkeyword',type=str,required=False) parser.add_argument('-pk','--prefix_keywords',help='commaseparatedadditionalwordsaddedbeforemainkeyword',type=str,required=False) parser.add_argument('-l','--limit',help='delimitedlistinput',type=str,required=False) parser.add_argument('-f','--format',help='downloadimageswithspecificformat',type=str,required=False, choices=['jpg','gif','png','bmp','svg','webp','ico']) parser.add_argument('-u','--url',help='searchwithgoogleimageURL',type=str,required=False) parser.add_argument('-x','--single_image',help='downloadingasingleimagefromURL',type=str,required=False) parser.add_argument('-o','--output_directory',help='downloadimagesinaspecificmaindirectory',type=str,required=False) parser.add_argument('-i','--image_directory',help='downloadimagesinaspecificsub-directory',type=str,required=False) parser.add_argument('-n','--no_directory',default=False,help='downloadimagesinthemaindirectorybutnosub-directory',action="store_true") parser.add_argument('-d','--delay',help='delayinsecondstowaitbetweendownloadingtwoimages',type=int,required=False) parser.add_argument('-co','--color',help='filteroncolor',type=str,required=False, choices=['red','orange','yellow','green','teal','blue','purple','pink','white','gray','black','brown']) parser.add_argument('-ct','--color_type',help='filteroncolor',type=str,required=False, choices=['full-color','black-and-white','transparent']) parser.add_argument('-r','--usage_rights',help='usagerights',type=str,required=False, choices=['labeled-for-reuse-with-modifications','labeled-for-reuse','labeled-for-noncommercial-reuse-with-modification','labeled-for-nocommercial-reuse']) parser.add_argument('-s','--size',help='imagesize',type=str,required=False, choices=['large','medium','icon','>400*300','>640*480','>800*600','>1024*768','>2MP','>4MP','>6MP','>8MP','>10MP','>12MP','>15MP','>20MP','>40MP','>70MP']) parser.add_argument('-es','--exact_size',help='exactimageresolution"WIDTH,HEIGHT"',type=str,required=False) parser.add_argument('-t','--type',help='imagetype',type=str,required=False, choices=['face','photo','clipart','line-drawing','animated']) parser.add_argument('-w','--time',help='imageage',type=str,required=False, choices=['past-24-hours','past-7-days','past-month','past-year']) parser.add_argument('-wr','--time_range',help='timerangefortheageoftheimage.shouldbeintheformat{"time_min":"MM/DD/YYYY","time_max":"MM/DD/YYYY"}',type=str,required=False) parser.add_argument('-a','--aspect_ratio',help='commaseparatedadditionalwordsaddedtokeywords',type=str,required=False, choices=['tall','square','wide','panoramic']) parser.add_argument('-si','--similar_images',help='downloadsimagesverysimilartotheimageURLyouprovide',type=str,required=False) parser.add_argument('-ss','--specific_site',help='downloadsimagesthatareindexedfromaspecificwebsite',type=str,required=False) parser.add_argument('-p','--print_urls',default=False,help="PrinttheURLsoftheimages",action="store_true") parser.add_argument('-ps','--print_size',default=False,help="Printthesizeoftheimagesondisk",action="store_true") parser.add_argument('-pp','--print_paths',default=False,help="Printsthelistofabsolutepathsoftheimages",action="store_true") parser.add_argument('-m','--metadata',default=False,help="Printthemetadataoftheimage",action="store_true") parser.add_argument('-e','--extract_metadata',default=False,help="Dumpsallthelogsintoatextfile",action="store_true") parser.add_argument('-st','--socket_timeout',default=False,help="Connectiontimeoutwaitingfortheimagetodownload",type=float) parser.add_argument('-th','--thumbnail',default=False,help="Downloadsimagethumbnailalongwiththeactualimage",action="store_true") parser.add_argument('-tho','--thumbnail_only',default=False,help="Downloadsonlythumbnailwithoutdownloadingactualimages",action="store_true") parser.add_argument('-la','--language',default=False,help="Definesthelanguagefilter.Thesearchresultsareauthomaticallyreturnedinthatlanguage",type=str,required=False, choices=['Arabic','Chinese(Simplified)','Chinese(Traditional)','Czech','Danish','Dutch','English','Estonian','Finnish','French','German','Greek','Hebrew','Hungarian','Icelandic','Italian','Japanese','Korean','Latvian','Lithuanian','Norwegian','Portuguese','Polish','Romanian','Russian','Spanish','Swedish','Turkish']) parser.add_argument('-pr','--prefix',default=False,help="Awordthatyouwouldwanttoprefixinfrontofeachimagename",type=str,required=False) parser.add_argument('-px','--proxy',help='specifyaproxyaddressandport',type=str,required=False) parser.add_argument('-cd','--chromedriver',help='specifythepathtochromedriverexecutableinyourlocalmachine',type=str,required=False) parser.add_argument('-ri','--related_images',default=False,help="Downloadsimagesthataresimilartothekeywordprovided",action="store_true") parser.add_argument('-sa','--safe_search',default=False,help="Turnsonthesafesearchfilterwhilesearchingforimages",action="store_true") parser.add_argument('-nn','--no_numbering',default=False,help="Allowsyoutoexcludethedefaultnumberingofimages",action="store_true") parser.add_argument('-of','--offset',help="Wheretostartinthefetchedlinks",type=str,required=False) parser.add_argument('-nd','--no_download',default=False,help="PrintstheURLsoftheimagesand/orthumbnailswithoutdownloadingthem",action="store_true") parser.add_argument('-iu','--ignore_urls',default=False,help="delimitedlistinputofimageurls/keywordstoignore",type=str) parser.add_argument('-sil','--silent_mode',default=False,help="Remainssilent.Doesnotprintnotificationmessagesontheterminal",action="store_true") parser.add_argument('-is','--save_source',help="createsatextfilecontainingalistofdownloadedimagesalongwithsourcepageurl",type=str,required=False) #使用parse_args()解析添加的参数 #默认的args的结果: #Namespace(aspect_ratio=None,chromedriver=None,color=None,color_type=None,delay=None,exact_size=None,extract_metadata=False,format=None,ignore_urls=False,image_directory=None,keywords=None,keywords_from_file=None,language=False,limit=None,metadata=False,no_directory=False,no_download=False,no_numbering=False,offset=None,output_directory=None,prefix=False,prefix_keywords=None,print_paths=False,print_size=False,print_urls=False,proxy=None,related_images=False,safe_search=False,save_source=None,silent_mode=False,similar_images=None,single_image=None,size=None,socket_timeout=False,specific_site=None,suffix_keywords=None,thumbnail=False,thumbnail_only=False,time=None,time_range=None,type=None,url=None,usage_rights=None) args=parser.parse_args()#返回一个命名空间 arguments=vars(args)#返回args的属性和属性值的字典 #arguments的结构: #{'image_directory':None,'print_urls':False,'usage_rights':None,'color':None,'socket_timeout':False,'time_range':None,'chromedriver':None,'prefix':False,'extract_metadata':False,'keywords':None,'no_numbering':False,'size':None,'keywords_from_file':None,'print_paths':False,'no_download':False,'delay':None,'similar_images':None,'specific_site':None,'thumbnail_only':False,'type':None,'thumbnail':False,'metadata':False,'related_images':False,'format':None,'silent_mode':False,'print_size':False,'color_type':None,'exact_size':None,'no_directory':False,'suffix_keywords':None,'single_image':None,'offset':None,'output_directory':None,'language':False,'url':None,'prefix_keywords':None,'save_source':None,'ignore_urls':False,'safe_search':False,'limit':None,'time':None,'aspect_ratio':None,'proxy':None} records=[] records.append(arguments) returnrecords
3.参数说明
add_argument()函数每个参数解释如下:
- nameorflags-选项字符串的名字或者列表,例如foo或者-f,--foo。
- action-命令行遇到参数时的动作,默认值是store。
- store_const,表示赋值为const;
- append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
- append_const,将参数规范中定义的一个值保存到一个列表;
- count,存储遇到的次数;此外,也可以继承argparse.Action自定义参数解析;
- nargs-应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于Positionalargument使用default,对于Optionalargument使用--const;或者是*号,表示0或多个参数;或者是+号表示1或多个参数。
- const-action和nargs所需要的常量值。
- default-不指定参数时的默认值。
- type-命令行参数应该被转换成的类型。
- choices-参数可允许的值的一个容器。
- required-可选参数是否可以省略(仅针对可选参数)。
- help-参数的帮助信息,当指定为argparse.SUPPRESS时表示不显示该参数的帮助信息.
- metavar-在usage说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
- dest-解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
4.位置参数设置
以上描述的是可选参数的使用,下面描述位置参数的设置,设置了位置参数后,调用脚本时必须要传入对应的值
importargparse parser=argparse.ArgumentParser() parser.add_argument('a',type=int,help='displayanintegerparam') args=parser.parse_args() print(args.a)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。