zoukankan      html  css  js  c++  java
  • 使用Python的argparse与ConfigParser库进行入参解析与ini parser

    一,入参解析库 argparse

      有时候写Python脚本,需要处理入参[-h][-v][-F]...等情况,如果自己来解析的话,会花费很多时间,而且也容易出问题,好在Python有现成的lib可以使用,就是argparse了,下面我们看看如何使用它。

    import argparse
    
    def get_version():
        return "0.0.1"
    
    def cmd_handler():
        args = argparse.ArgumentParser()
        args.add_argument("-v", "--version", action='version', version=get_version())
        args.add_argument("-o", "--output_name", type=str, dest="output_filename", help="Output File Name")
        args.add_argument("-S", "--SHA_Algorithm", type = str, dest = "ENABLE_SHA384_AES256", help = "SHA Algorithm. (SHA256 or SHA384, default is SHA256)", default='SHA256', choices=['SHA256', 'SHA384'])
        args.add_argument("-X", "--Old_Argv", type = str, dest = "OLD_ARGV", nargs='+', help = "Use old argv config")
        args = args.parse_args()
    
        return args
    
    if __name__ == "__main__":
        args = cmd_handler()
        print args.output_filename
        print args.OLD_ARGV

    1. -h是argparse帮我们加的,所以只需要写好help的信息就可以了,-v有时候会需要调用函数来打印,只需要返回字符串就可以了。

    2. add_argument 表示增加需要解释的参数,-o是简写,一般用一个-; --output_name是全称,dest表示把入参给output_filename,后面就可以用args.output_filename来获取入参了。

    3. args.parse_args会解析入参,然后返回一个容器,后面就可以访问了。

    二. config解析库

      很多时候,对于自动化脚本,用入参来配置,会比较麻烦,这意味着要经常改code,改入参。而使用ini来配置程序,会极大方便控制程序的执行,Python中有ConfigParser库可以使用。

    import ConfigParser
    
    ini_config = None
    
    def handler_iniargs(ini_file)
        global ini_config
    
        ini_config = ConfigParser.ConfigParser()
        ini_config.read(ini_file)
    
        output_name = ini_config.get("OUTPUT_CONFIG", "filename")
        is_secure_mode = ini_config.getboolean("SECURE_CONFIG", "secure")
    
    if __name__ == "__main__":
        handler_iniargs(./config.ini)
        print ini_config

    Inifile示例:

    [OUTPUT_CONFIG]
    filename=myfile.txt
    
    [SECURE_CONFIG]
    secure=True
  • 相关阅读:
    [TJOI2013]循环格
    [CQOI2017]小Q的表格
    【51nod 1514】 美妙的序列
    【bzoj3456】 城市规划
    [SHOI2010]最小生成树
    CF438E The Child and Binary Tree
    bzoj 4712: 洪水
    POJ-3069 Saruman's Army---区间选点
    POJ-3617 Best Cow Line---字符串贪心
    HDU-1850 Being a Good Boy in Spring Festival---尼姆博奕的运用
  • 原文地址:https://www.cnblogs.com/smilingsusu/p/14338175.html
Copyright © 2011-2022 走看看