我将Python Click库用于我的命令行界面.我想有一个需要多个键值对的命令.我在api上很灵活.例如

my_cli my_command FOO=1 BAR=2

或者可能

my_cli my_command FOO 1 BAR 2

甚至

my_cli my_command {"FOO": 1, "BAR": 2}

有没有简单的方法可以通过Click做到这一点?

解决方法:

最简单的解决方案基本上与您想要使用这样的API的常规Python函数相同.

采取单个参数,将可变长度的参数流分组为元组.然后,您要做什么取决于您是否需要单独的参数:

>>> def func(*args):

... d = dict(zip(args[::2], args[1::2]))

... print(d)

>>> func('FOO', 1, 'BAR', 2)

{'FOO': 1, 'BAR': 2}

…或组合的key:value参数:

>>> def func(*args):

... d = dict(arg.split(':') for arg in args)

... print(d)

这个代码有点笨拙,因为在Python中,参数不仅是空格分隔的单词,还请允许我使用:

>>> func('FOO:1', 'BAR:2')

{'FOO': 1, 'BAR': 2}

第一个的等效点击如下所示:

@click.command()

@click.argument('args', nargs=-1)

def my_command(args):

d = dict(zip(args[::2], args[1::2]))

click.echo(d)

(显然,您可以像其他任何命令一样,将其粘贴在click.group等中.)

现在:

$./clicky.py FOO 1 BAR 2

{'FOO': 1, 'BAR': 2}

第二个看起来像这样:

@click.command()

@click.argument('args', nargs=-1)

def my_command(args):

d = dict(arg.split(':') for arg in args)

click.echo(d)

并且请注意,现在,使用它根本不是很麻烦,因为对于您的shell来说,参数只是用空格分隔的单词:

$./clicky.py FOO:1 BAR:2

{'FOO': 1, 'BAR': 2}

如果要同时处理KEY = VALUE和KEY:VALUE怎么办?然后,您只需要编写比arg.split(‘:’)稍微复杂的内容即可.而且,您可能还需要更好的错误处理.但这应该足以帮助您入门.

标签:python-click,python

来源: https://codeday.me/bug/20191108/2010116.html

python一次删除多个键值对_Python单击:多个键值对参数相关推荐

  1. python字典值求和_Python两个字典键同值相加的方法总结

    Python字典键同值相加详解 两个字典A = {'a': 1, 'b': 2, 'c': 3}, B = {'b': 4, 'c': 6, 'd': 8} 要合并这两个字典,键值同则相加. 两个字典 ...

  2. python字典中的键是什么_python字典中的键是什么

    字典的键 字典中的值没有任何限制, 可以是任意Python对象,即从标准对象到用户自定义对象皆可,但是字典中的键是有类型限制的. (1)不允许一个键对应多个值 必须明确一条原则:每个键只能对应一个项. ...

  3. python参数默认值实例_Python中使用partial改变方法默认参数实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x #partial.py #authror: orangleliu ''' funct ...

  4. python中and和or的惰性求值特点_python中的惰性求值

    可能经常会有人问到python中的range和xrange有什么区别,你知道range是直接创建了一个列表,而xrange是创建了一个生成器,并且xrange非常适合当需要创建一个很大的列表的时候,因 ...

  5. python表达式3**2**3的值为_Python表达式 1/2 的值为 , 1//3+1//3+1//3 的值为 ,5%3的值为 。_会计基础与实务答案_学小易找答案...

    [填空题]f_____ adj. feeling upset and impatient because one cannot control a situation or achieve sth. ...

  6. python取出字典的某个键_python 取出字典的键或者值/如何删除一个字典的键值对/如何遍历字典...

    先定义一个字典并直接进行初始化赋值 my_dict = dict(name="lowman", age=45, money=998, hourse=None) 1.取出该字典所有的 ...

  7. python字典键值唯一_python字典操作详解

    python字典是一个无序.以键值对存储的数据类型,数据关联性强.唯一一个映射数据类型.键:必须是可哈希(不可变的数据类型:字符串.数字.元组.bool)值,并且是唯一的 None: none 是一个 ...

  8. python读取配置文件获取所有键值对_python笔记14-读取yaml配置文件(pyyaml)

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

  9. python输出键值列表_Python 键值分组或分区数据

    Python 使用键值分组或者分区数据,对分组后的数据做何种归约是没有限制的.数据中可能包含一些自变量或者因变量.可以通过自变量对数据进行分区,然后计算每个分区的各项汇总值,包括最大值.最小值.平均值 ...

最新文章

  1. 使用Leangoo做销售管理系统
  2. AI 影像诊断平台的5大设计要点
  3. 离线轻量级大数据平台Spark之读取CSV文件实例
  4. sql 精读(三) 标准 SQL 中的编号函数示例
  5. 淘宝网登陆时密码输不进去??
  6. Python打包分发工具setuptools简介
  7. dubbo官方文档_不可忽视的Dubbo线程池
  8. 有益的CountDownLatch和棘手的Java死锁
  9. MacOS安装pip失败,提示:SyntaxError: invalid syntax
  10. oracle数据库领域,菜鸟成长课程之《Oracle数据库职业直通车》,引领大家真正进入Oracle数据库领域...
  11. 2原理图_pcb板设计电路原理图步骤和方法
  12. 跟着海盗头子创业是一种怎样的体验?
  13. 软件开发价格估算方法
  14. mysql中secure_file_priv=不生效的问题
  15. http协议文字加图解
  16. 求星期算法c语言程序,C语言根据指定日期计算是星期几
  17. C#编写上位机连接华为云平台IoTDA
  18. VSTO | C#快速开发电子签章插件
  19. 关于相干解调中的同频同相问题
  20. 5-RNN-06_剧本生成项目

热门文章

  1. 剑指offer 求1+2+3+...+n
  2. python科学计算笔记(四)pandas 数据索引与选取
  3. tomcat web.xml配置
  4. 分布式系统概念:一致性协议、一致性模型、拜占庭问题、租约、副本协议
  5. spark编译错误解决 Error:(52, 75) not found: value TCLIService
  6. 【OpenCV】图像几何变换:旋转,缩放,斜切
  7. mxGraph实现按住ctrl键盘拖动图形实现复制图形功能
  8. 改了改之前那个很糙的XXX
  9. 如何修改ECShop发货单查询显示个数
  10. PHP中问号?和冒号: 的作用