python中 argparse(命令行传参)的用法
了解一下命令行参数的用法
先给出add_argument中参数列表,下面有常用参数使用的栗子:
- name or flags - 选项字符串的名字或者列表,例如foo 或者-f, --foo。
- action - 在命令行遇到该参数时采取的基本动作类型。
- nargs - 应该读取的命令行参数数目。
- const - 某些action和nargs选项要求的常数值。
- default - 如果命令行中没有出现该参数时的默认值。
- type - 命令行参数应该被转换成的类型。
- choices - 参数可允许的值的一个容器。
- required - 该命令行选项是否可以省略(只针对可选参数)。
- help - 参数的简短描述。
- metavar - 参数在帮助信息中的名字。
- dest - 给parse_args()返回的对象要添加的属性名称。
看到那个东西,千万别害怕,我们只需了解我以下介绍的就够了。。栗子走起。。
1:简单用法 , 小试牛刀。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("name")
parser.add_argument("age")
args = parser.parse_args()
print(args.name) # 打印传入的参数
print(args.age)
print(type(args.age)) # 查看参数的类型
print(args) # 打印出参数与其传入值的对应
先实例化ArgumentParser()。这里我们设置让命令行传两个参数,将传进来的参数依次赋值给name, age。 最后用parse_args()方法进行参数解析。最后我们打印一下两个参数以及参数的类型。看下面运行结果:
可以看出,这里不管你在命令行传的数字还是字符串,最后都是字符串。。
2:限制参数类型 在add_argument中指定属性type的值,这里我们将age指定为int类型
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("name")
parser.add_argument("age", type=int)
args = parser.parse_args()
print(args.name) # 打印传入的参数
print(args.age)
print(type(args.name))
print(type(args.age)) # 查看参数的类型
print(args) # 打印出参数与其传入值的对应
输出结果:可以看出args.age为int类型
3. 设定默认值,指定这个参数是否必须给定 (default和required的用法)
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", default="shawroad")
parser.add_argument("--age", type=int, required=True)
args = parser.parse_args()
print(args.name) # 打印传入的参数
print(args.age)
print(type(args.name))
print(type(args.age)) # 查看参数的类型
print(args) # 打印出参数与其传入值的对应
--name和name其实一样,输出对应值的时候不需带--, 这里给name 一个默认值,并将age设为必须指定的参数。。为什么第一个例子中没用“--”, 而这里我们用了“--” , 如果用“--”, 在给对应参数指定值时,必须把--name带上,不带会报错。。若不用“--”,就是例1中,传入的值依次赋给所需的参数。。
看结果:
我们试着给 --age 不指定值,看结果,直接报错,说有一个age参数被需要
4. 指定参数的范围 choice用法
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", default="shawroad", help="这里输入的是名字")
parser.add_argument("--age", type=int, required=True, help="这里是年龄")
parser.add_argument("--sex", choices=["男", "女"])
args = parser.parse_args()
print(args.name) # 打印传入的参数
print(args.age)
print(args.sex)
print(type(args.name))
print(type(args.age)) # 查看参数的类型
print(type(args.sex))
print(args) # 打印出参数与其传入值的对应
指定sex取值只能是男或者女
若你不按规矩来
5. 在不知道参数怎样指定。 代码中加最后一行parser.print_help() 会给出参数的说明
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", default="shawroad", help="这里输入的是名字")
parser.add_argument("--age", type=int, required=True, help="这里是年龄")
parser.add_argument("--sex", choices=["男", "女"])
args = parser.parse_args()
print(args.name) # 打印传入的参数
print(args.age)
print(args.sex)
print(type(args.name))
print(type(args.age)) # 查看参数的类型
print(type(args.sex))
print(args) # 打印出参数与其传入值的对应
parser.print_help() # 当你不知道参数怎样指定,这样就会打印出参数的说明
输出结果:
还有一种方法,就是在运行程序,在后面加个 -h 就可以看参数列表
如下图: