Python利用装饰器click处理解析命令行参数
作者:玩转测试开发 时间:2023-12-23 20:49:05
简介
在Python开发和测试过程中主要有两种模式可以选择:脚本模式、命令行模式。在代码的开发和调试过程中使用脚本模式很方便,目前比较主流的命令行工具主要有sys.argv、getopt、argparse,也可以使用装饰器的方式来解析命令行参数,即使用click模块。
基本形式
python main.py -a v1 -b v2 ...
历史攻略
Python:解析命令行参数
之前的案例
argparse 将提供的选项默认视为字符串,新增int类型的案例
# -*- coding: utf-8 -*-
# time: 2022/8/31 16:20
# file: argparse_demo1.py
# author: tom
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", help="添加的第1个参数name,姓名。")
parser.add_argument("--age", help="添加的第2个参数age,年龄。", type=int)
args = parser.parse_args()
print(f"args.name:{args.name}")
print(f"type:{type(args.name)}")
print("*" * 50)
print(f"args.age:{args.age}")
print(f"type:{type(args.age)}")
改造成click装饰
层次更清晰、明了。
# -*- coding: utf-8 -*-
# time: 2022/9/4 16:09
# file: cmd_demo.py
# 公众号: 玩转测试开发
import click
@click.command()
@click.option('--name', prompt='姓名:', help='姓名')
@click.option('--age', prompt='年龄:', default=25, help='年龄,默认值25')
def args_data(name, age):
print(f"name:{name}")
print(f"type:{type(name)}")
print("*" * 80)
print(f"age:{age}")
print(f"type:{type(age)}")
if __name__ == '__main__':
args_data()
依次执行:
python cmd_demo.py --help
python cmd_demo.py --name=tom --age=30
python cmd_demo.py --name ken --age 20
执行结果:
(venv) D:\>python cmd_demo.py --help
Usage: cmd_demo.py [OPTIONS]
Options:
--name TEXT 姓名
--age INTEGER 年龄,默认值25
--help Show this message and exit.
(venv) D:\>python cmd_demo.py --name=tom --age=30
name:tom
type:<class 'str'>
*************************************************
age:30
type:<class 'int'>
(venv) D:\>python cmd_demo.py --name ken --age 20
name:ken
type:<class 'str'>
*************************************************
age:20
type:<class 'int'>
来源:https://mp.weixin.qq.com/s/pKj7NMVxEAnizaUvkfxgZQ
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
linux系统使用python监控apache服务器进程脚本分享
ORACLE ORA-01653: unable to extend table 的错误处理方案(oracle报错)
Python yield 小结和实例
新书:《精通CSS网页布局》
![](https://img.aspxhome.com/file/UploadPic/20091/8/css-57s.gif)
Oracle字符集修改查看方法
Oracle数据库编写有效事务指导方针
发一个自己用的JS框架(试用版^_^)
在keras下实现多个模型的融合方式
![](https://img.aspxhome.com/file/2023/5/77755_0s.jpg)
Python详细讲解浅拷贝与深拷贝的使用
![](https://img.aspxhome.com/file/2023/5/81635_0s.png)
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
![](https://img.aspxhome.com/file/2023/6/99466_0s.png)
基于K.image_data_format() == 'channels_first' 的理解
![](https://img.aspxhome.com/file/2023/0/64340_0s.jpg)
简化版的vue-router实现思路详解
Python中全局变量和局部变量的理解与区别
![](https://img.aspxhome.com/file/2023/5/104995_0s.png)
background-clip/origin一则运用
![](https://img.aspxhome.com/file/UploadPic/20084/15/2008415145225878s.png)
br玩转清除浮动
Dreamweaver表格布局经验谈
Python使用扩展库pywin32实现批量文档打印实例
Python 中urls.py:URL dispatcher(路由配置文件)详解
![](https://img.aspxhome.com/file/2023/3/101193_0s.png)