在看一份代码时遇到了argparse这个模块,在此记录它的用法。argparse是python的一个命令行解析包,可以十分方便的对python文件进行命令行读写。换句话说,利用argparse模块,我们可以在py文件外部对程序中的变量进行赋值(比如某文件路径的输入)。
没有用过linux的同学可能没接触过命令行,在这里我用windows的cmd执行代码。
1.添加一个位置参数
import argparse
parser = argparse.ArgumentParser() #这句不要忘了
parser.add_argument("echo")
args = parser.parse_args()
print('参数echo的值是{}'.format(args.echo))
在cmd中执行代码
python test.py 'hello'
执行结果
参数echo的值是hello
首先,通过parser.add_argument("echo")
添加一个命令行参数,存储在名为'echo'的变量里面
然后通过parser.parse_args()
方法实例化一个名为args的对象,通过对args取值获取命令行信息
2.为位置参数添加说明
添加位置参数的代码修改如下:
parser.add_argument("echo",help="我是关于echo的说明")
在cmd中执行代码
python test.py -h
执行结果
positional arguments:
echo 我是echo的说明
可见,-h的执行结果中,打印出了位置参数echo添加的说明
3.指定参数类型
代码如下:
import argparse
parser = argparse.ArgumentParser() #这句不要忘了
parser.add_argument("echo")
args = parser.parse_args()
print(args.square**2)
在cmd中执行代码
python test.py 100
执行结果
10000
这里的代码制定了一个类型为int的位置参数square
若不指定类型,argparse会将参数默认作为字符串存储
4.指定可选参数
先看代码:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbosity")
args = parser.parse_args()
print('可选参数verbosity的值是{}'.format(args.verbosity))
在参数前加上前缀--,意味着这是个可选参数,可选参数与位置参数有两点不同:
1.可选参数可以不指定,比如说可执行代码代码
python test.py
则执行结果为
可选参数verbosity的值是None
注意此时可选参数的值是None
2.可选参数使用时,需要先声明该参数再指定其值,示例如下
python test.py --verbosity 100
则执行结果为
可选参数verbosity的值是100
5.设置参数的默认值
添加位置参数的代码修改如下:
parser.add_argument("--verbosity", default=0)
若cmd中不输入可选参数verbosity的值,则其默认值为0.否则更新为输入的值