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)
原文地址:https://www.cnblogs.com/cpy-devops/p/9287298.html
时间: 2024-10-09 03:29:30