今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse。
命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码当中的话,我们每次修改参数都需要修改对应的代码和逻辑显然这不太方便。比较好的办法就是把必要的参数设置成通过命令行传入的形式,这样我们只需要在运行的时候修改参数就可以了。
sys.argv
解析命令行传入参数最简单的办法就是通过sys.argv,sys.argv可以获取到我们通过命令行传入的参数。
import sys
print(sys.argv)
用法很简单,只需要调用sys.argv即可。argv是一个数组,如果参数有多个,我们可以通过下标进行访问。但是有一点需要注意,argv当中存储的结果是从Python调用开始的。
我们来看一个例子,我们随意传入一些参数,print sys.argv之后是这样的。
python test.py -a -c -d=222
>>> ['test.py', '-a', '-c', '-d=222']
也就是说我们python运行test.py这个文件名也当做参数之一,所以我们要获取自定义参数的话需要从argv[1]开始。
sys.argv的好处是方便,我们只需要访问它就可以拿到传入的参数了。但是缺点也很明显,就是功能太少了。假如我们是看其他大神的代码,我们想要知道运行的时候需要传入什么参数,以及每个参数代表什么含义就做不到了。
为了解决这个问题,我们需要使用封装更多功能的工具,也是本篇文章的核心——argparse。
基本用法
argparse是Python当中的一个库,我们需要先import一下,这个库我没记错应该是Python自带的,也不需要安装,我们直接就可以使用。
在我们使用之前,我们需要先初始化这个parse,也就是一个参数解析器。
# 这里ArgumentParser可以传入一个字符串,表示用途
parser = argparse.ArgumentParser()
parser.parse_args()
这个时候其实就已经有了一个解析器了,我们在运行的时候可以传入参数-h,表示help,也就是查看目前解析器当中定义的参数。由于我们现在什么也没有,所以能显示出来的就只有help。
必选参数
首先我们来介绍必选参数,它的定义和函数当中的必填参数是一样的,也就是说我们运行程序必须要的参数。如果不传,那么程序不应该执行会进行报错并提示。
定义必选参数的方法非常简单,我们只需要通过add_argument传入参数的名称就可以了。
import argparse
parser <