前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python中如何定义函数的传入参数是option的_如何将几个参数列表传递给@ click.option…

python中如何定义函数的传入参数是option的_如何将几个参数列表传递给@ click.option…

作者头像
Java架构师必看
发布于 2021-08-23 02:34:40
发布于 2021-08-23 02:34:40
8.3K0
举报
文章被收录于专栏:Java架构师必看Java架构师必看

如果通过使用自定义选项类将列表格式化为python列表的字符串文字,则可以强制单击以获取多个列表参数:

自定义类:

import click

import ast

class PythonLiteralOption(click.Option):

def type_cast_value(self, ctx, value):

try:

return ast.literal_eval(value)

except:

raise click.BadParameter(value)

该类将使用Python的Abstract Syntax Tree模块将参数解析为python文字.

自定义类用法:

要使用自定义类,请将cls参数传递给@ click.option()装饰器,如:

@click.option('--option1', cls=PythonLiteralOption, default=[])

这是如何运作的?

这是有效的,因为click是一个设计良好的OO框架. @ click.option()装饰器通常实例化click.Option对象,但允许使用cls参数覆盖此行为.因此,从我们自己的类中继承click.Option并过度使用所需的方法是一个相对容易的事情.

在这种情况下,我们遍历click.Option.type_cast_value()然后调用ast.literal_eval()来解析列表.

测试代码:

@click.command(context_settings=dict(help_option_names=['-h', '--help']))

@click.option('--option1', cls=PythonLiteralOption, default=[])

@click.option('--option2', cls=PythonLiteralOption, default=[])

def cli(option1, option2):

click.echo("Option 1, type: {} value: {}".format(

type(option1), option1))

click.echo("Option 2, type: {} value: {}".format(

type(option2), option2))

# do stuff

if __name__ == '__main__':

import shlex

cli(shlex.split(

'''--option1 '["o11", "o12", "o13"]'

--option2 '["o21", "o22", "o23"]' '''))

检测结果:

Option 1, type: value: ['o11', 'o12', 'o13']

Option 2, type: value: ['o21', 'o22', 'o23']

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python命令行神器 Click 快速上手
导读:写 Python 的经常要写一些命令行工具,虽然标准库提供有命令行解析工具 Argparse,但是写起来非常麻烦,我很少会使用它。命令行工具中用起来最爽的就是 Click,它是 Flask 的团队 pallets 的开源项目。Click 只要很少的代码就可以优雅地创造一个命令行工具,它致力于将创建命令行工具的过程变的快速而有趣。
IT阅读排行榜
2019/05/17
1.1K0
[971]python命令行神器之Click
Click 是 Flask 的开发团队 Pallets 的另一款开源项目,它是用于快速创建命令行的第三方模块。
周小董
2021/05/11
8091
命令行神器 Click 简明笔记
Click 是用 Python 写的一个第三方模块,用于快速创建命令行。我们知道,Python 内置了一个 Argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click 相比于 Argparse,就好比 requests 相比于 urllib。
py3study
2020/01/03
4960
Python 命令行之旅:深入 click 之子命令篇
在上两篇文章中,我们介绍了 click 中的”参数“和“选项”,本文将继续深入了解 click,着重讲解它的“命令”和”组“。
HelloGitHub
2021/05/14
9650
Python 命令行之旅:深入 click 之增强功能
在前面三篇文章中,我们介绍了 click 中的参数、选项和命令,本文将介绍 click 锦上添花的功能,以帮助我们更加轻松地打造一个更加强大的命令行程序。
HelloGitHub
2021/05/14
9390
快速上手 Python 命令行模块 Click
说下 Click 模块是干啥的,简单说,它就是把我们的 Python 脚本的一些函数,通过 添加带有 Click 关键字的装饰器进行装饰进而将函数调用的形式转化为命令行传参的形式然后执行。听不懂也没关系,我们会一步一步来,基本上按照我的实际应用情况来写的。 本文不会涉及太多复杂的语法和理论,将会用通俗的语言和大家进行分享。
用户1564362
2020/06/18
1.5K0
快速上手 Python 命令行模块 Click
猫头虎 分享:Python库 Click 的简介、安装、用法详解入门教程
今天猫头虎带您一起探索 Click 库!最近有位粉丝私信猫哥,问到在项目中如何用 Python 简单又高效地实现命令行工具。大家熟悉的 argparse 虽然功能齐全,但其复杂的语法对许多开发者来说难度不小。这里猫哥推荐一个让你轻松上手的 Python 库——Click!这个库非常适合开发友好、灵活且专业的命令行工具。
猫头虎
2024/10/28
2530
猫头虎 分享:Python库 Click 的简介、安装、用法详解入门教程
Python 命令行之旅:深入 click 之参数篇
在上一篇文章中,我们初步掌握了 click 的简单用法,并了解到它与 argparse 和 docopt 的不同。接下来,将深入介绍 click 的各类用法,以让你能轻松打造复杂的命令行程序。
Python猫
2019/11/20
1.4K0
使用 Python Click 库显示提示内容
在现代软件开发中,命令行接口(CLI)是一种非常流行的用户界面形式,尤其在自动化和脚本化任务中。Python 的 click 库是一个功能强大且易于使用的库,专门用于创建命令行工具。本文将深入介绍如何使用 click 库显示提示内容,并引导你创建一个功能丰富的 CLI 应用程序。
IT蜗壳-Tango
2024/06/20
2520
Python 命令行之旅:深入 click 之选项篇
在上一篇文章中,我们介绍了 click 中的“参数”,本文将继续深入了解 click,着重讲解它的“选项”。
Python猫
2019/11/22
1.9K0
使用click创建完美的Python命令行程序
让我们将这些规则应用于一个具体的案例:一个使用Caesar cipher加密和解密消息的脚本。
用户8949263
2022/11/07
1.1K0
使用click创建完美的Python命令行程序
Python 命令行神器 Click
实际上 Python 标准库提供了一个默认的命令行工具 Argparse,但是对于 Click 来说 Argparse 使用起来非常的繁琐和麻烦,大多数人都很少使用它。Argparse 对比与 Click 就像网页解析中使用的 re 和 BeautifulSoup。
keinYe
2019/10/30
8620
最全总结 | 聊聊 Python 命令行参数化的几种方式!
在日常编写 Python 脚本的过程中,我们经常需要结合命令行参数传入一些变量参数,使项目使用更加的灵活方便
AirPython
2022/09/28
2.5K0
【python自动化】七月PytestAutoApi开源框架学习笔记(一)
本篇内容为学习七月大佬开源框架PytestAutoApi记录的相关知识点,供大家学习探讨
梦无矶小仔
2023/09/08
4540
【python自动化】七月PytestAutoApi开源框架学习笔记(一)
用Click编写Python命令行工具
在编写Python命令行(CLI)应用程序时,使用Click库进行参数解析的深入教程
IT派
2018/07/30
3.4K0
用Click编写Python命令行工具
Python 命令行参数的3种传入方式
一般我们在运行 Python 项目或者脚本的时候都是直接执行启动脚本即可,但是 Python 作为一个脚本语言,在 Linux 中经常会跟 Shell 脚本结合使用,这个时候执行的 Python 脚本多半都需要使用命令行参数传入一些变量,下面就分享一下我在工作中常见和自己会使用的3种命令行参数传入方式。
Hopetree
2022/09/26
1K0
Python 命令行之旅:使用 click 实现 git 命令
在前面五篇介绍 click 的文章中,我们全面了解了 click 的强大能力。按照惯例,我们要像使用 argparse 和 docopt 一样使用 click 来实现 git 命令。
HelloGitHub
2021/05/14
8870
python命令行库如何实现子命令共享参数?
本文参考这篇文章,比较了argparse、click的区别。尽管只用某一个也不是不可以,但我觉得我还是挺有必要进行一下对应的对比。
千灵域
2022/06/17
9810
Python 工匠:使用装饰器的技巧
装饰器(Decorator) 是 Python 里的一种特殊工具,它为我们提供了一种在函数外部修改函数的灵活能力。它有点像一顶画着独一无二 @ 符号的神奇帽子,只要将它戴在函数头顶上,就能悄无声息的改变函数本身的行为。
崔庆才
2019/07/22
5280
python︱函数、for、if、_name_、迭代器、防范报错、类定义、装饰器、argparse模块
版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/54291769
悟乙己
2019/05/28
9190
推荐阅读
相关推荐
Python命令行神器 Click 快速上手
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档