Python高阶——argparse(命令行与参数解析)

1.前言

本节,将讲解如何通过命令行传递参数。具体以代码形式讲解,保您一看就懂!

2.创建脚本

创建一个脚本命名为argparse_optional_argument.py,以便一会儿在terminal运行,注意,不能用Jupyter Notebook,它不能在terminal运行!!

3.导入解析模块

import argparse    #导入模块

4.初始化、添加参数、解析参数

  1. 在argparse模块中调用ArgumentParser()类并实例化。
  2. 给通过add_argument()函数给parser添加要解析的参数,里面的参数需要用户在运行脚本的时候传入,具体怎么传会在下面给出。
  3. 通过parser.parse_args()将所有用户传入的参数进行解析。
if __name__ == __main__:
    
    #初始化parser
    parser = argparse.ArgumentParser(       
        description="my math script"
    )  #description为描述性内容,当运行脚本时第一行会显示my math script

    # 添加位置/可选参数
    parser.add_argument(-n,--num1, help="Number 1", type=float)  
    parser.add_argument(-i,--num2, help="Number 2", type=float)
    parser.add_argument(-o,--operation, help="provide operator", default=+)

    # 解析参数
    args = parser.parse_args()
    print(args)
    
    输出:Namespace(num1=None, num2=None, operation=+)
    
    result = None
    if args.operation == +:
        result = args.num1 + args.num2
    if args.operation == -:
        result = args.num1 - args.num2
    if args.operation == *:
        result = args.num1 * args.num2
    if args.operation == pow:
        result = pow(args.num1, args.num2)

    print("Result : ", result)

4.运行脚本

import argparse    #导入模块

if __name__ == __main__:
    
    #初始化parser
    parser = argparse.ArgumentParser(       
        description="my math script"
    )

    # 添加位置/可选参数
    parser.add_argument(num1, help="Number 1", type=float)  
    parser.add_argument(num2, help="Number 2", type=float)
    parser.add_argument(operation, help="provide operator", default=+)

    # 解析参数
    args = parser.parse_args()
    print(args)

terminal执行:

$ python argparse_optional_argument.py

输出的便是args的内容,此时我们还没有传入参数 传入参数

$ python argparse_optional_argument.py 30 50 +

5.通过脚本实现计算功能

import argparse    #导入模块

if __name__ == __main__:
    
    #初始化parser
    parser = argparse.ArgumentParser(       
        description="my math script"
    )

    # 添加位置/可选参数

    parser.add_argument(-n,--num1, help="Number 1", type=float)  
    parser.add_argument(-i,--num2, help="Number 2", type=float)
    parser.add_argument(-o,--operation, help="provide operator", default=+)

    # 解析参数
    args = parser.parse_args()
    print(args)
    
    输出:Namespace(num1=None, num2=None, operation=+)
    
    result = None
    if args.operation == +:
        result = args.num1 + args.num2
    if args.operation == -:
        result = args.num1 - args.num2
    if args.operation == *:
        result = args.num1 * args.num2
    if args.operation == pow:
        result = pow(args.num1, args.num2)

    print("Result : ", result)
$ python argparse_optional_argument.py --num1 30 --num2 50 --operation +

【注意】如果不加“–”参数的位置就要严格按照添加的顺序,加了“–”,即两根横线下面写法也可以

$ python argparse_optional_argument.py --num1 30 --operation + --num2 50

还有一种缩写形式也可以,就是“-”,即一根横线

python argparse_optional_argument.py -n=84 -i=70 -o=+

输入-h将会显示所有可选参数

python argparse_optional_argument.py -h
经验分享 程序员 微信小程序 职场和发展