世界的过客

每个人获得的东西都恰好是他值得获得的东西

Argparse

argparse是一个命令行解析的标准库,通过参数可以根据add_argument()的action选项触发不同的action。

# arg-demo.py
import argparse

def get_args():
    parser = argparse.ArgumentParser(
        description="demo argument parser",
        epilog="example usage"
    )
    parser.add_argument('-l',action="show", required=True,
        help='Help text for option x')
    parser.add_arguemtn('-a',help="show all file",default=False)
    print(parser.parse_args()) # parse_args()用来参数解析

if __name__ == '__main__':
    get_args() 
$python3 arg_demo.py -x testing # Namespace(l='testing', a=False)

required=True保证了在命令调用的时候一定要上-l参数,也就是其他都是可选参数而-l参数是必须的。输出的结果显示带参数执行会在namespace里加上参数和参数值, 完全可以理解为命令空间内的全局变量。 default保证了-a参数的默认值为False, 实际上如果不加的话,如果使用的时候没使用这个参数。那么默认值为None。

显然,现在例子中的都是可以同时使用的参数。有些时候一些参数提供的功能没法同时使用,这时候需要使用互斥分组,add_mutually_execlusive_group

group = parser.add_mutually_exclusive_group()

group.add_argument('-l','--execute',action="show",
        help='Help text for option x')
group.add_arguemtn('-a',help="show all file",default=False)

如果同时使用这两参数的话,会报错:

error: argument -a: not allowed with argument -l/–execute