1

我正在编写一个可以导入一些数据的小型 python 命令行工具。

用法看起来像

./cli.py export -p
./cli.py import -p

显然,“import”与正常的 import 语句冲突。所以函数看起来像

@click.command(short_help="Imports all documents",
@click.option('password', '-p')
def import(password):    
    coll = db.get_document_collection()

由于我使用click库来解析/构建我的命令行选项,因此每个函数都以其名称导入。但是当我执行它时,它失败了。

   def import(password):
            ^
   SyntaxError: invalid syntax

TLDR;如何指定已由 python 内部定义的函数?

4

1 回答 1

1

在不更改click选项的情况下重命名函数确实会重命名您的子命令。但是,click 允许您使用任何您想要的函数名称,并提供您想要与之关联的子命令名称。

例如,这将为您提供import将运行该函数的子命令my_import_func

#!/usr/bin/env python3

import click

@click.group()
def cli():
    pass

@cli.command('import')
def my_import_func():
    click.echo("Importing")

if __name__ == '__main__':
    cli()

重新定义内置名称是一个坏主意。

于 2016-04-17T11:32:56.393 回答