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


猜你喜欢
- 本文实例讲述了C#使用ODBC与OLEDB连接数据库的方法。分享给大家供大家参考,具体如下:using System;using Syste
- 今天给一个客户巡检的情况下发从库没有业务的情况mysqld的cpu的一个core占用100%.查主库慢查询也没有关于写的SQL.可以说是典的
- 当下,C#与Python都是比较热门的计算机编程语言,他们各有优缺点,如果能让他们互相配合工作,那是多么美好的事情,今天我来讲解一下如何利用
- 1、使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; +----------+ | D
- 在使用Django自带的admin后台的时候,他提供了一些默认的指令可以对数据进行操作, 比如批量删除,修改等 同样的我们也可以添加自己的指
- 设计是简单的如果你知道要放的东西该放到哪。曾经在某个电子杂志里看到一篇关于如何在平面设计中偷懒的文章,引发了我的一些思考,在平面设计中有这么
- 开始一个组件,毫无目的的写代码是一个不好的习惯,要经历 分析 => 抽象 => 实现 => 应用 四个阶段。组件DEMO地
- TF-IDF(term frequency–inverse document frequency)是一种用于信息检索(information
- 作业备份,不是备份数据库,是备份作业。 我的方法是把作业导出成文件备份起来,因为当你服务器维护的多了的时候很多你的作业 就很成问题,很麻烦。
- 一、 概念: ① 数据库同步 (主从同步 --- 主数据库写的同时 往从服务器写数据)② 数据库同步 (主主同步 -
- 问题:python 在调用dll 的时候出现了精度问题总结:使用decimal库进行转换就可以正常传递。遇到的问题具体情况dll 生成函数代
- 我们继续学习Python异步编程,这里将介绍异步Web框架sanic,为什么不是tornado?从框架的易用性来说,Flask要远远比tor
- 这篇文章是读者朋友的python协程的学习经验之谈,以下是全部内容:协程的历史说来话长,要从生成器开始讲起。如果你看过我之前的文章pytho
- mysql中有三种日期类型:date(年-月-日)create table test(hiredate date);datetime(日期时
- Selenium 是一个可以让浏览器自动化地执行一系列任务的工具,常用于自动化测试。不过,也可以用来给网页截图。目前,它支持 Java、C#
- 因为写别的程序想要一边遍历一边删除列表里的元素,就写了一个这样的程序进行测试,这样写出来感觉还挺简洁的,就发出来分享一下。代码l=list(
- eval(“1+2”),-> 3 动态判断源代码中的字符串是一种很强大的语
- 前言MySQL 服务器正确安装以后,可以通过命令行管理工具或者图形化的管理工具来操作 MySQL 数据库。MySQL 图形化管理工具极大地方
- 当下基本所有的目标检测类的任务都会选择基于深度学习的方式,诸如:YOLO、SSD、RCNN等等,这一领域不乏有很多出色的模型,而且还在持续地
- 逻辑判断内容滚动到底需要知道的信息内容区域的真实高度(也就是滚动区域)滚动条距离顶部的位置内容区域的可见高度分别对应下面的三个API。ele