1

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

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

但由于某种原因,它不能按预期工作。

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()正在执行,因为如果我在其中添加打印语句,touch()我可以在输出中看到一些东西。

4

1 回答 1

1

不幸的是,使用 click 会使您的函数永远不会返回任何值。您可以使用click.echo将值打印到前端,但您不能返回任何值,因为它在函数执行完成后退出。换句话说,一旦你用 click.command 包装它,它就不再表现为一个函数,而是成为一个命令行程序。

您也可以使用optparse来实现您想要实现的目标。

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

编辑:-我在这里发现了一个类似的问题,您也可以将其用作参考-当@click.option 用于将命令行参数传递给函数时,如何返回值?

于 2016-03-20T10:33:04.787 回答