Argparse 命令行解析模块常用参数

Argparse模块可以轻松编写用户友好的命令行界面。该程序定义了它需要的参数,argparse 并将找出如何解析这些参数sys.argv。该argparse 模块还会自动生成帮助和用法消息,并在用户给出程序无效参数时发出错误,该模块可以替代sys.argv用法。

argparse.ArgumentParser 对象参数如下:
    prog: 一般默认不改,使用脚本名称作为该参数值
    usage:该参数是提示脚本用法,定义好后出现在脚本执行 python script.py --help 的下一行
    description: 该参数输入说明信息到--help界面的 可选参数上方
    epilog: 该参数输入说明信息到--help界面的 可选参数 下方
    version: 自定义版本号
add_argument() 方法参数如下:
    name or flags : 一个字符串选项
    help: 提示出现的帮助信息
    type:设置参数的数据类型
    default: 设置参数的默认值

  

#!/usr/bin/env python
#--* coding: utf-8 -*-
 
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
 
import argparse
 
parser = argparse.ArgumentParser(usage="python piltest.py {'-h'|'--help'|'-v'|'--classes'|'--name'}",
                                 description="使用下列参数输出学生信息",
                                 epilog="分类输出学生信息",
                                 version="test: 1.0")
 
parser.add_argument('-c', '--classes', help='班级名称', default=1, type=int)
parser.add_argument('-n', '--name', help='学生名字', default='jwh',type=str)
 
args = parser.parse_args()
 
student_class = args.classes
student_name = args.name
print "该学生姓名为 %s, 在%s 班" %(student_name, student_class)

 

parse_known_args:方法获取Namespace 和参数列表

#!/usr/bin/env python
# --* coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import argparse
parser = argparse.ArgumentParser(usage="python piltest.py {'-h'|'--help'|'-v'|'--classes'|'--name'}",
                                 description="选项如下:",
                                 epilog="帮助信息到此为止",
                                 version="test: 1.0")
parser.add_argument('-m', '--mode', help='选择人员{老师或学生}', default='student', type=str)
args, remaining = parser.parse_known_args()
print args,remaining

 

综合实例:

#!/usr/bin/env python
# --* coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import argparse
parser = argparse.ArgumentParser(usage="python piltest.py {'-h'|'--help'|'-v'|'--classes'|'--name'}",
                                 description="选项如下:",
                                 epilog="帮助信息到此为止",
                                 version="test: 1.0")
parser.add_argument('-m', '--mode', help='选择人员{老师或学生}', default='student', type=str)
args, remaining = parser.parse_known_args()
if args.mode.lower() == 'teacher':
    parser.add_argument('-s', '--subject', help='所教科目', default='english', type=str)
    parser.add_argument('-n','--name', help='老师名字',default='derrick',type=str)
    args = parser.parse_args()
    teacher_subject = args.subject
    teacher_name = args.name
    print "%s 老师,所教的科学类目是:%s" %(teacher_name, teacher_subject)
elif args.mode.lower() == 'student':
    parser.add_argument('-c', '--classes', help='班级名称', default=1, type=int)
    parser.add_argument('-n', '--name', help='学生名字', default='jwh', type=str)
    args = parser.parse_args()
    student_class = args.classes
    student_name = args.name
    print "该学生姓名为 %s, 在%s 班" % (student_name, student_class)

posted @ 2018-07-10 09:37  池偏一  阅读(279)  评论(0编辑  收藏  举报