Python高阶——argparse(命令行与参数解析)
1.前言
本节,将讲解如何通过命令行传递参数。具体以代码形式讲解,保您一看就懂!
2.创建脚本
创建一个脚本命名为argparse_optional_argument.py,以便一会儿在terminal运行,注意,不能用Jupyter Notebook,它不能在terminal运行!!
3.导入解析模块
import argparse #导入模块
4.初始化、添加参数、解析参数
- 在argparse模块中调用ArgumentParser()类并实例化。
- 给通过add_argument()函数给parser添加要解析的参数,里面的参数需要用户在运行脚本的时候传入,具体怎么传会在下面给出。
- 通过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
下一篇:
Object与json字符串的相互转换