python一次删除多个键值对_Python单击:多个键值对参数
我將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单击:多个键值对参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美菜商城a
- 下一篇: 健康知识宣传标语文案30句