argparse特性
- 支持可选参数
- 支持子命令
- 支持重复参数个数统计
- 更加友好的使用提示
整体使用样例(看注释)
代码语言:txt复制import argparse代码语言:txt复制from datetime import datetime代码语言:txt复制parser = argparse.ArgumentParser()代码语言:txt复制# 必填参数代码语言:txt复制parser.add_argument("host", help="database host")代码语言:txt复制# 可选参数(`--`前缀)代码语言:txt复制parser.add_argument("--database", help="database name")代码语言:txt复制# 类型要求(type=int)代码语言:txt复制parser.add_argument("--port", help="database port", type=int, default=3306)代码语言:txt复制def valid_datetime(s):代码语言:txt复制 """代码语言:txt复制 自定义的日期时间校验方法代码语言:txt复制 :param s:代码语言:txt复制 :return:代码语言:txt复制 """代码语言:txt复制 try:代码语言:txt复制 return datetime.strptime(s, "%Y-%m-%d %H:%M:%S")代码语言:txt复制 except ValueError:代码语言:txt复制 msg = "Not a valid date: '{0}'.".format(s)代码语言:txt复制 raise argparse.ArgumentTypeError(msg)代码语言:txt复制# 指定类型校验(type=valid_date):自定义的校验方法valid_date代码语言:txt复制parser.add_argument("--begin", help="数据对账的开始时间(含)", default=None, type=valid_datetime)代码语言:txt复制parser.add_argument("--end", help="数据对账区间的结束时间(不含)", default=None, type=valid_datetime)代码语言:txt复制args = parser.parse_args()代码语言:txt复制print(args.host)代码语言:txt复制print(args)必填参数
代码语言:txt复制parser.add_argument("host", help="database host")代码语言:txt复制print(args)- 使用效果
python test.py localhost代码语言:txt复制Namespace(host='localhost')- 帮助文档
usage: test.py [-h] host代码语言:txt复制positional arguments:代码语言:txt复制 host database host代码语言:txt复制optional arguments:代码语言:txt复制 -h, --help show this help message and exit可选参数数(--前缀)
代码语言:txt复制parser.add_argument("--database", help="database name")特定类型(type=int)
parser.add_argument("--port", help="database port", type=int, default=3306)
自定义类型
代码语言:txt复制def valid_datetime(s):代码语言:txt复制 """代码语言:txt复制 自定义的日期时间校验方法代码语言:txt复制 :param s:代码语言:txt复制 :return:代码语言:txt复制 """代码语言:txt复制 try:代码语言:txt复制 return datetime.strptime(s, "%Y-%m-%d %H:%M:%S")代码语言:txt复制 except ValueError:代码语言:txt复制 msg = "Not a valid date: '{0}'.".format(s)代码语言:txt复制 raise argparse.ArgumentTypeError(msg)代码语言:txt复制# 指定类型校验(type=valid_date):自定义的校验方法valid_date代码语言:txt复制parser.add_argument("--begin", help="数据对账的开始时间(含)", default=None, type=valid_datetime)代码语言:txt复制parser.add_argument("--end", help="数据对账区间的结束时间(不含)", default=None, type=valid_datetime)


