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

标签:Python,click,解析,命令行,参数
0
投稿

猜你喜欢

  • linux系统使用python监控apache服务器进程脚本分享

    2021-10-15 00:15:41
  • ORACLE ORA-01653: unable to extend table 的错误处理方案(oracle报错)

    2024-01-15 12:24:10
  • Python yield 小结和实例

    2023-07-21 15:37:39
  • 新书:《精通CSS网页布局》

    2009-01-08 11:57:00
  • Oracle字符集修改查看方法

    2024-01-17 05:45:13
  • Oracle数据库编写有效事务指导方针

    2009-03-19 17:41:00
  • 发一个自己用的JS框架(试用版^_^)

    2011-09-11 18:53:24
  • 在keras下实现多个模型的融合方式

    2023-06-03 17:14:59
  • Python详细讲解浅拷贝与深拷贝的使用

    2023-01-01 03:00:10
  • python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序

    2022-04-23 02:28:25
  • 基于K.image_data_format() == 'channels_first' 的理解

    2022-08-01 08:12:45
  • 简化版的vue-router实现思路详解

    2024-05-10 14:17:28
  • Python中全局变量和局部变量的理解与区别

    2022-11-13 15:35:14
  • background-clip/origin一则运用

    2008-04-15 14:45:00
  • br玩转清除浮动

    2007-05-11 16:52:00
  • Dreamweaver表格布局经验谈

    2007-02-03 11:39:00
  • Python使用扩展库pywin32实现批量文档打印实例

    2023-11-05 09:55:13
  • Python 中urls.py:URL dispatcher(路由配置文件)详解

    2021-01-19 02:47:15
  • 详尽解析javascript的event对象

    2008-01-16 11:27:00
  • 解决go 生成的exe不在bin文件夹里的问题

    2024-03-16 20:49:52
  • asp之家 网络编程 m.aspxhome.com