最近看源码中出现了两个命令行解析库,在这里记一下笔记。
docopt:第三方的库。
推荐网站:https://xuanwo.org/2016/04/04/docopt-intro/
argparse:python自带的库。
推荐网站:https://blog.ixxoo.me/argparse.html
docopt简单介绍
这个模块用法只需要在.py文件开头添加形如如下示例的注释
"""Usage:
pip-diff (--fresh | --stale) <reqfile1> <reqfile2> [--exclude <package>...]
pip-diff (-h | --help)
Options:
-h --help Show this screen.
--fresh List newly added packages.
--stale List removed packages.
"""
然后代码中调用,便可以获得一个字典,字典中存储了上面实例中出现的参数。
args = docopt(__doc__, version='pip-diff')
这个字典的内容形如下方示例。
{
'--freash':False,
'--stale':False,
'<reqfile1>':None,
'<reqfile2>':None,
'<package>':None,
'--excludes':False
}
小知识点
1、括号的使用
括号中带的参数表示必须要出现,是必填项
2、 | 号(分割符)的使用
(--fresh | --stale )像这样的,表示必须出现前者或者后者。|就代表or
3、形如element...
这个表示这里可以输入多个参数,如果要访问的话可以使用 args['<element>']
4、默认值
如果想要哪个option有默认值的话,可以使用 --stale [default:test]
argparse简单介绍
python自带的命令行解析库。使用上没有上面的库那么的方便。
parser = argparse.ArgumentParser(description=__description__)
parser.add_argument(
'-V', '--version', dest='version', action='store_true',
help="show version")
parser.add_argument(
'testset_paths', nargs='*',
help="testset file path")
如果想要获取命令行参数,则需要形如下方的语句
args = parser.parse_args()
logger.setup_logger(args.log_level)
# 如果接收到 -v 或者--version打印版本
if args.version:
logger.color_print("{}".format(__version__), "GREEN")
exit(0)
小知识点
1、help
add_argument(help='Hello World')
这个参数主要是写入这个命令的帮助信息
2、action
add_argument(action=action_store)
表示这个参数存在则为True,不存在则为False
3、nargs
add_argument(nargs=‘*’)
表示可以接受多个参数,并把多个参数存在一个列表中。