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