文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书
命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse。下面主要介绍两种解析Python命令行参数的方式。
1. sys.argv
解析Python中命令行参数的最传统的方法是通过sys.argv。Demo如下:
1  | #!/usr/env/python python  | 
测试结果如下:
1  | $ python test.py 1 2  | 
这种方法比较古老,灵活性很差,同时解析出来的参数都是str类型。但在编写简单脚本,参数较少且固定时比较方便。
2. argparse
argparse模块是Python内置的参数解析模块,使用起来比较简单且功能强大。Demo如下:
1  | #!/usr/env/python python  | 
测试结果如下:
1  | # Test 1  | 
ArgumentParser类创建时的参数如下:
- prog - 程序的名字(默认:sys.argv[0])
 - usage - 描述程序用法的字符串(默认:从解析器的参数生成)
 - description - 参数帮助信息之前的文本(默认:空)
 - epilog - 参数帮助信息之后的文本(默认:空)
 - parents - ArgumentParser 对象的一个列表,这些对象的参数应该包括进去
 - formatter_class - 定制化帮助信息的类
 - prefix_chars - 可选参数的前缀字符集(默认:‘-‘)
 - fromfile_prefix_chars - 额外的参数应该读取的文件的前缀字符集(默认:None)
 - argument_default - 参数的全局默认值(默认:None)
 - conflict_handler - 解决冲突的可选参数的策略(通常没有必要)
 - add_help - 给解析器添加-h/–help 选项(默认:True)
 
add_argument函数的参数如下:
- name or flags - 选项字符串的名字或者列表,例如foo 或者-f, –foo。
 - action - 在命令行遇到该参数时采取的基本动作类型。
 - nargs - 应该读取的命令行参数数目。
 - const - 某些action和nargs选项要求的常数值。
 - default - 如果命令行中没有出现该参数时的默认值。
 - type - 命令行参数应该被转换成的类型。
 - choices - 参数可允许的值的一个容器。
 - required - 该命令行选项是否可以省略(只针对可选参数)。
 - help - 参数的简短描述。
 - metavar - 参数在帮助信息中的名字。
 - dest - 给parse_args()返回的对象要添加的属性名称。
 
参考资料: