我click
用来定义一个接受datetime
s 和逗号分隔的参数列表的 CLI。
import click
def valid_date(s):
try:
return dt.strptime(s, "%Y-%m-%d")
except ValueError:
msg = "Not a valid date: '{0}'.".format(s)
raise Exception(msg)
except TypeError:
return None
split_parameter = lambda _, __, s: s.split(",")
check_date = lambda _, __, s: valid_date(s)
@click.command()
@click.argument('symbols', callback=split_parameter)
@click.option('--start_date', callback=check_date)
@click.option('--end_date', callback=check_date)
@click.option('--file_name')
def f(symbols, start_date, end_date, file_name):
return None
它有效,但围绕callback
s 的逻辑有点尴尬。拆分列表和转换为都datetime
中断了简单的点击结构。有没有这样做的pythonic方式?