argparse是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分。
import math
# 计算圆柱体的体积
def cal_vol(radius,height):
vol = math.pi * pow(radius,2) * height
return vol
if __name__=='__main__':
print(cal_vol(2,4))
import math
# 1、导入包
import argparse
def parse_args():
# 2、创建参数对象
parse = argparse.ArgumentParser("计算圆柱体的体积")
# 3、往参数对象中添加参数
parse.add_argument("radius", type=int, help="圆柱体半径")
parse.add_argument("height", type=int, help="圆柱体的高")
# 4、解析参数对象获得解析对象
args = parse.parse_args()
return args
def cal_vol(radius, height):
vol = math.pi * (radius**2) * height
return vol
if __name__ == "__main__":
# 使用解析对象,参数获取使用命令行参数
args = parse_args()
radius = args.radius
height = args.height
print(cal_vol(radius, height))
测试结果:
其中
1、命令行参数输入默认按顺序赋值,顺序不同会造成结果不同
python argparse_no_class.py 1 4
python argparse_no_class.py 4 1
2、默认命令-h可以获取添加参数时设置的帮助信息
python argparse_no_class.py -h
1、导入argparse
包;
2、创建ArgumentParser()
参数对象;
3、调用add_argument()
方法,往参数对象中添加参数
4、使用parse_args()
解析参数对象,获得解析对象
5、使用解析对象:程序的其他部分需要使用命令行参数时,用解析对象.参数
获取。
import argparse
class TestOptions():
def __init__(self):
self.parser = argparse.ArgumentParser(description="Style Transfer")
self.parser.add_argument("--content", type=str, default='./data/077436.jpg', help="这个参数是输入图片的文件名")
self.parser.add_argument("--style_id", type=int, default=26, help="这是风格图片的ID")
def parse(self):
self.opt = self.parser.parse_args()
args = vars(self.opt)
print('Load options')
for name, value in sorted(args.items()):
print('%s: %s' % (str(name), str(value)))
return self.opt
if __name__ == "__main__":
parser = TestOptions()
args = parser.parse()
print('*' * 98)
print(args.content)
add_argument() 方法
定义如何解析命令行参数
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
每个参数解释如下:
name or flags
- 选项字符串的名字或者列表,例如 foo 或者 -f, --foo。
action - 命令行遇到参数时的动作,默认值是 store。
store_const,表示赋值为const;
append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
append_const,将参数规范中定义的一个值保存到一个列表;
count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
nargs - 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
const - action 和 nargs 所需要的常量值。
default - 不指定参数时的默认值。
type - 命令行参数应该被转换成的类型。
choices - 参数可允许的值的一个容器。
required - 可选参数是否可以省略 (仅针对可选参数)。
help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
本文主要参考:
1、argparse 模块详解
2、python之parser.add_argument()用法——命令行选项、参数和子命令解析器(好文章)