我正在尝试实现基本的命令行功能。
所以我需要能够将文件作为参数传递,读取它并进一步传递结果。
但由于某种原因,它无法按预期工作。
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()
我可以在输出中看到一些东西。
答案 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?