将click.command的结果传递给另一个函数

时间:2016-03-20 10:16:05

标签: python python-2.7 python-click

我正在尝试实现基本的命令行功能。

所以我需要能够将文件作为参数传递,读取它并进一步传递结果。

但由于某种原因,它无法按预期工作。

import click


@click.command()
@click.argument('arg', nargs=1, type=click.File('r'))
def touch(arg):
    return len(arg.readlines())


def fill():
    print touch()


if __name__ == '__main__':
    fill()

没有任何输出。 但似乎touch()正在执行,因为如果我将print语句添加到touch()我可以在输出中看到一些东西。

1 个答案:

答案 0 :(得分:1)

不幸的是,使用click会使您的函数永远不会返回任何值。您可以使用var $html = $(hmtlstr),$dates=$html.find("strong"); $dates.eq(0).text(newFromDateString); $dates.eq(1).text(newToDateString); 将值打印到前端,但在函数执行完成时退出时不能返回任何值。换句话说,一旦用click.command包装它,它就不再是一个函数,而是成为一个命令行程序。

您也可以使用click.echo来实现您想要实现的目标。

资源 - https://docs.python.org/2/library/optparse.html

编辑: - 我在此处发现了类似的问题,您也可以将此作为参考 - How do I return a value when @click.option is used to pass a command line argument to a function?