美文网首页
Python解析命令行参数 - argparse

Python解析命令行参数 - argparse

作者: 十毛tenmao | 来源:发表于2021-01-21 18:53 被阅读0次

    命令行参数可以提升脚本的灵活性,更加通用。完成参数解析一般用到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)
    

    参考

    相关文章

      网友评论

          本文标题:Python解析命令行参数 - argparse

          本文链接:https://www.haomeiwen.com/subject/qkmdzktx.html