时间:2021-05-22
本文研究的主要是Python命令行解析模块的相关内容,具体如下。
Python命令行常见的解析器有两种,一是getopt模块,二是argparse模块。下面就解读下这两种解析器。
这个模块可以帮助脚本解析命令行参数,一般是sys.argv[1:]。它遵循着Unix的getopt()函数相同的约定(用-/--指定命令参数)。这个模块提供两个函数(getopt.getopt()/getopt.gnu_getopt())和一个参数异常(getopt.GetoptError)。
这里重点介绍getopt.getopt()这个函数。
函数原型:getopt.getopt(args, options[, long_options])
这个函数有三个参数:
当给定的命令行参数解析不了的话,就会抛出GetoptError异常。
函数的返回值包含两个元素:
下面看几个Demo:
短选项:
>>> importgetopt>>> args='-a -b -cfoo -d bar a1 a2'.split()>>> args['-a', '-b', '-cfoo', '-d', 'bar', 'a1','a2']>>> optlist, args= getopt.getopt(args,'abc:d:')>>> optlist[('-a', ''), ('-b', ''), ('-c', 'foo'),('-d', 'bar')]>>> args['a1', 'a2']长选项:
>>> s='--condition=foo --testing --output-file abc.def -x a1 a2'>>> args= s.split()>>> args['--condition=foo', '--testing','--output-file', 'abc.def', '-x', 'a1', 'a2']>>> optlist, args= getopt.getopt(args,'x', [... 'condition=','output-file=','testing'])>>> optlist[('--condition', 'foo'), ('--testing', ''),('--output-file', 'abc.def'), ('-x', '')]>>> args['a1', 'a2']在脚本当中经典的应用实例:
importgetopt,sys defmain(): try: opts, args = getopt.getopt(sys.argv[1:],"ho:v", ["help","output="]) except getopt.GetoptErroras err: # print help information and exit: printstr(err) # will print something like "option -a not recognized" usage() sys.exit(2) output =None verbose =False for o, a in opts: if o =="-v": verbose =True elif o in ("-h","--help"): usage() sys.exit() elif o in ("-o","--output"): output = a else: assertFalse,"unhandled option" # ... if __name__ =="__main__": main()argparse模块使得编写用户友好的命令行接口非常容易。程序只需定义好它要求的参数,然后argparse将负责如何从sys.argv中解析出这些参数。argparse模块还会自动生成帮助和使用信息并且当用户赋给程序非法的参数时产生错误信息。
使用argparse模块一般需要三个步骤:
1. 创建一个解析器
使用argparse的第一步是创建一个ArgumentParser对象:
>>> parser= argparse.ArgumentParser()ArgumentParser对象会保存把命令行解析成Python数据类型所需要的所有信息。
2. 添加参数
通过调用add_argument()方法向ArgumentParser添加程序的参数信息。通常情况下,这些信息告诉ArgumentParser如何接收命令行上的字符串并将它们转换成对象。这些信息被保存下来并在调用parse_args()时用到。例如:
>>> parser.add_argument('--name', help='username')>>> parser.add_argument('--pass', help='password ')接下来,调用parse_args()返回的对象将带有两个属性,name和pass。分别保存着用户名与密码。
3. 解析参数
ArgumentParser通过parse_args()方法解析参数。它将检查命令行,把每个参数转换成恰当的类型并采取恰当的动作。在大部分情况下,这意味着将从命令行中解析出来的属性建立一个简单的 Namespace对象。
>>> argments = parser.parse_args(['--name','li','--pass','si'])在脚本中,parse_args() 调用一般不带参数,ArgumentParser 将根据sys.argv自动确定命令行参数。
ArgumentParser 对象
class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter,prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)
创建一个新的argmentParserr对象。所有的参数应该以关键字参数传递。下面有对每个参数各自详细的描述,但是简短地讲它们是:
add_argument() 方法
ArgumentParser.add_argument(nameor flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][,metavar][, dest])
定义应该如何解析一个命令行参数。下面每个参数有它们自己详细的描述,简单地讲它们是:
总结
以上就是本文关于Python命令行解析模块详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在python中,命令行解析的很好用,首先导入命令行解析模块importargparseimportsys然后创建对象parse=argparse.Argume
一、argparse模块1、模块说明#argparse是python的标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块,argparse
最近在研究pathon的命令行解析工具,argparse,它是Python标准库中推荐使用的编写命令行程序的工具。以前老是做UI程序,今天试了下命令行程序,感觉
本篇将介绍python中sys,getopt模块处理命令行参数如果想对python脚本传参数,python中对应的argc,argv(c语言的命令行参数)是什么
前言在开发CLI(CommandLineInterface)工具的业务场景下,离不开命令行参数的收集和解析。接下来,本文介绍如何收集和解析命令行参数。收集命令行