了解一下命令行参数的用法

先给出add_argument中参数列表,下面有常用参数使用的栗子:

  1. name or flags - 选项字符串的名字或者列表,例如foo 或者-f, --foo。
  2. action - 在命令行遇到该参数时采取的基本动作类型。
  3. nargs - 应该读取的命令行参数数目。
  4. const - 某些action和nargs选项要求的常数值。
  5. default - 如果命令行中没有出现该参数时的默认值。
  6. type - 命令行参数应该被转换成的类型。
  7. choices - 参数可允许的值的一个容器。
  8. required - 该命令行选项是否可以省略(只针对可选参数)。
  9. help - 参数的简短描述。
  10. metavar - 参数在帮助信息中的名字。
  11. 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  就可以看参数列表

如下图:

 

目前就知道这么多,如果后面用到更多的参数,我将会在这里补充。。。。