Python解析命令行参数 - argparse

命令行参数可以提升脚本的灵活性,更加通用。完成参数解析一般用到getopt, optparse和argparse,其中argparse是Python3.2新推出的命令行参数解析模块

argparse特性

  • 支持可选参数
  • 支持子命令
  • 支持重复参数个数统计
  • 更加友好的使用提示

整体使用样例(看注释)

import argparse
from datetime import datetime

parser = argparse.ArgumentParser()

# 必填参数
parser.add_argument("host", help="database host")
# 可选参数(`--`前缀)
parser.add_argument("--database", help="database name")
# 类型要求(type=int)
parser.add_argument("--port", help="database port", type=int, default=3306)


def valid_datetime(s):
    """
    自定义的日期时间校验方法
    :param s:
    :return:
    """
    try:
        return datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
    except ValueError:
        msg = "Not a valid date: '{0}'.".format(s)
        raise argparse.ArgumentTypeError(msg)


# 指定类型校验(type=valid_date):自定义的校验方法valid_date
parser.add_argument("--begin", help="数据对账的开始时间(含)", default=None, type=valid_datetime)
parser.add_argument("--end", help="数据对账区间的结束时间(不含)", default=None, type=valid_datetime)

args = parser.parse_args()
print(args.host)
print(args)

必填参数

parser.add_argument("host", help="database host")
print(args)
  • 使用效果
python test.py localhost
Namespace(host='localhost')
  • 帮助文档
usage: test.py [-h] host

positional arguments:
  host        database host

optional arguments:
  -h, --help  show this help message and exit

可选参数数(--前缀)

parser.add_argument("--database", help="database name")

特定类型(type=int

parser.add_argument("--port", help="database port", type=int, default=3306)

自定义类型

def valid_datetime(s):
    """
    自定义的日期时间校验方法
    :param s:
    :return:
    """
    try:
        return datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
    except ValueError:
        msg = "Not a valid date: '{0}'.".format(s)
        raise argparse.ArgumentTypeError(msg)


# 指定类型校验(type=valid_date):自定义的校验方法valid_date
parser.add_argument("--begin", help="数据对账的开始时间(含)", default=None, type=valid_datetime)
parser.add_argument("--end", help="数据对账区间的结束时间(不含)", default=None, type=valid_datetime)

参考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章