命令行解析——argparse模块
一、为什么要使用argparse模块?
为了提升效率,加上提高代码的可复用性,大型的任务中,我们一般不会直接把参数硬编码在程序中,而是通过命令行传入相应的参数,这样的方式更加灵活,且效率更高;甚至,我们都不会从命令行去传入参数,而是通过sh文件,shell脚本编程来传入相应的参数。
之前还有个optparse,但是Python2.7之后不再对optparse模块进行扩展。
另外sys模块也可以进行简单的解析。如图,sys.argv[0]代表文件名,sys.argv[n]代表参数n,本质是命令行传入的参数以列表的形式保存在sys.argv这个变量中。在参数很多,有些不需要传入,有些取固定值,有些有数据类型要求,有些参数要传递多个等情况下sys.argv便无法胜任。
二、使用argparse模块主要有哪些步骤?
1 导入模块——argparse
import argparse
2 创建解析器——ArgumentParser
argparse模块是一个类,因此首先要建立一个对象(ArgumentParser)
parser = argparse.ArgumentParser() # 实例化
3 添加参数选项——add_argument
parser.add_argument('name') # 添加位置参数,必须给定
parser.add_argument('-a', '--age', type=int, dest='age') # 添加可选参数,可选给定
4 程序调用参数——parse_args
args = parser.parse_args() # 返回一个命名空间,方便使用变量
args_all = args.__dict__ # 取出所有参数,字典(key,val)
args_name = args.name # 取出name参数,val
5 如何使用?
(1) 脚本式
vim argparse_test.py
___________________________________________________________
import argparse
def argparse_test():
parser = argparse.ArgumentParser()
parser.add_argument('name',type=str)
parser.add_argument('-a', '--age', type=int, dest='age')
args = parser.parse_args()
print('单个调用参数')
print(args.name)
print