在为学校图书馆写一个基于命令行的监控脚本,准备用 click 来实现交互。但是现在遇到一个问题,就是 @option 的个数太多,就像下面这样:
import click
@click.command()
@click.option('-a')
@click.option('-b')
@click.option('-c')
@click.option('-d')
...
@click.option('-z')
def myscript(a, b, c, ..., z):
if a:
...
if b:
...
...
if z:
...
由于 @option 太多,必须要在myscript
下面用大量的 if 语句一一检查用户是否给出了某个选项,这样的话代码结构太丑了,请问对这样的情况有什么好的解决方法?
1
bonfy 2017-03-11 23:04:00 +08:00 via iPhone
最近有个 python-fire 很火 可以看看
至少不用写这么多 if |
2
PythonAnswer 2017-03-13 08:53:07 +08:00
pocoo 喜欢滥用 @,实在是丑啊。
|
3
siteshen 2017-03-13 12:43:43 +08:00
没用过 click ,不过 decorator 太多是可以抛弃语法糖,直接用循环解决:
def myscript(self, ...): pass for option in reversed(['-a', '-b', ..., '-z']): myscript = click.option(option)(myscript) myscript = click.command()(myscript) |