• 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)
    

  • 相关阅读:
    洛谷 P5110 块速递推
    洛谷 P3868 [TJOI2009]猜数字
    Codeforces 343D Water Tree
    Codeforces 915E Physical Education Lessons
    洛谷 P2787 语文1(chin1)- 理理思维
    洛谷 P4344 [SHOI2015]脑洞治疗仪
    洛谷 P3338 [ZJOI2014]力
    【模板】珂朵莉树(ODT)(Codeforces 896C Willem, Chtholly and Seniorious)
    【模板】FFT
    Solution of CF911G Mass Change Queries
  • 原文地址:https://www.cnblogs.com/cpy-devops/p/9287298.html
Copyright © 2020-2023  润新知