Могу написать следующее:
import click
@click.command()
@click.option('--things', callback=lambda _,__,x: x.split(',') if x else [])
def fun(things):
print('You gave me these things: {}'.format(things))
if __name__ == '__main__':
fun()
Кажется, это работает, по крайней мере, если я сохраню его как fun.py
, я смогу запустить:
$ python fun.py
You gave me these things: []
$ python fun.py --things penguins,knights,"something different"
You gave me these things: ['penguin', 'knights', 'something different']
Есть ли более идиоматический способ написать этот код с помощью Click, или это почти все?
lambda
. Вы также можете сделатьmultiple=True
для поддержкиpython fun.py --thing penguin --thing knights ...
, но это изменит структуру командной строки. - person mgilson   schedule 29.11.2016--things
в справке. - person ForeverWintr   schedule 10.12.2016