在Python中处理命令行参数详解(sys.argv 与 argparse 详解)
在运行python程序的时候,往往需要传入一些参数,本节主要介绍两种设置传入命令行参数的方法。
sys.argv
使用sys.argv处理传入参数,需要引入sys模块:
import sys
sys.argv即是使用命令行运行 python 命令(或者 python3 命令)时获取到的命令行参数数组,它是一个list,包含了python(或者python3)命令后边传入的内容,包括紧跟在 python/python3 后边的第一个脚本的名称,后边其他的参数,如果有的话,则是按照空格来标识不同的参数,即使用空格隔开的元素(不论是整数、字符串、小数等)都视为一个独立的参数,比如如下的程序:
import sys
print(type(sys.argv))
print(len(sys.argv))
print(sys.argv)
我们在命令行中使用如下命令运行该脚本:
python main.py 123 1.5 hello world
就会得到如下的运行结果:
5
['main.py', '123', '1.5', 'hello', 'world']
从结果可以看到,这些参数在sys.argv中都以字符串的形式存储,所以如果想得到整数、小数等,需要使用 int、float 等进行显式转换:
import sys
a = int(sys.argv[1])
b = int(sys.argv[2])
print(a+b)
调用:
main.py 123 456
就会得到579的结果。
需要注意的是,脚本名称本身占据了sys.argv[0],所以其他传入的参数实际是从sys.argv[1]开始的。
这种方式虽然简单,但是可用性比较小,必须按照顺序传入参数,而且我们熟悉的 - 和 -- 形式的参数是不起作用的:
python main.py --a 123 --b 456
['main.py', '--a', '123', '--b', '456']
所以可以使用下边的功能更加强大、复杂的第二种方法
argparse
argparse的使用需要引入argparse包:
import argparse
我们将这种方法称为参数解析器方式,其使用可以分为三个基本步骤:
实例化参数解析器
使用ArgumentParser实例化一个参数解析器:
parser = argparse.ArgumentParser()
class argparse.ArgumentPar