zoukankan      html  css  js  c++  java
  • ChainMap & python args parse

    python的内建模块ChainMap可以把一组dict串起来并组成一个逻辑上的dictChainMap本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找。

    什么时候使用ChainMap最合适?举个例子:应用程序往往都需要传入参数,参数可以通过 命令行 | 环境变量 | 默认参数 传入,
    我们可以用ChainMap实现参数的查找优先级:命令行参数 > 环境变量 > 默认参数。

    下面的代码演示了如何查找usercolor这两个参数:

    from collections import ChainMap
    import os, argparse
    
    # 构造缺省参数:
    defaults = {
        'color': 'red',
        'user': 'guest'
    }
    
    # 构造命令行参数:
    parser = argparse.ArgumentParser()
    parser.add_argument('-u', '--user')
    parser.add_argument('-c', '--color')
    namespace = parser.parse_args()
    command_line_args = { k: v for k, v in vars(namespace).items() if v }
    
    # 组合成ChainMap:
    combined = ChainMap(command_line_args, os.environ, defaults)
    
    # 打印参数:
    print('color=%s' % combined['color'])
    print('user=%s' % combined['user'])
    

    没有任何参数时,打印出默认参数:

    $ python3 use_chainmap.py 
    color=red
    user=guest
    

    当传入命令行参数时,优先使用命令行参数:

    $ python3 use_chainmap.py -u bob
    color=red
    user=bob
    

    同时传入命令行参数和环境变量,命令行参数的优先级较高:

    $ user=admin color=green python3 use_chainmap.py -u bob
    color=green
    user=bob
    

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431953239820157155d21c494e5786fce303f3018c86000

  • 相关阅读:
    取随机数
    端口号
    cut命令
    渗透
    ssh免密登陆
    漏洞扫描
    信息收集1:DNSEUM命令
    Centos6与Centos7的区别
    HAPROXY+KEEPALIVED实现负载均衡
    this的用法
  • 原文地址:https://www.cnblogs.com/dylanchu/p/9972252.html
Copyright © 2011-2022 走看看