前言
一些大型的python
项目经常性会提供命令行的接口使得同样一个文件能够根据参数的不同执行不同的操作。常见的如python main.py --name='zhangsan' --age=20
,这让用户能够需求选择不同的服务启动并选择不同的参数配置,实现这一操作的方法有很多,比较常见的是三种:sys
,argparse
,click
。
sys
sys
是python
自带的模块,可以通过sys.argv
获取到输入的参数,如下所示:
import sys
def hello():
print(sys.argv)
if __name__ == '__main__':
hello()
# python3 test.py hey 23
# >> ['test.py', 'hey', '23']
sys.argv
返回一个列表,第一项是执行的文件名,后面依次是输入的未指定参数。
该模块十分简单易懂且方便使用,不过缺点也很明显,无法指定参数的名称,输入的参数必须按照指定顺序,且没有help
打印帮助信息(指明每个参数的作用),需要开发者手动创建一个。
argparse
argparse
是一个非常好用的命令行参数工具,相比于sys
,它能够指定参数名称,参数默认值,参数的描述信息等,具体如下:
import argparse
def hello(args):
print(args)
print(args.name,args.age)
if __name__ == '__main__':
my_arg = argparse.ArgumentParser('My argument parser')
my_arg.add_argument