简体   繁体   English

如何在Python中定义一个名为“导入”的函数?

[英]How can I define a function called “import” in Python?

Im writing a small python commandline tool which can import some data. 我正在编写一个小的python命令行工具,可以导入一些数据。

Usage looks like 用法看起来像

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

Obviously, "import" conflicts with the normal import statment. 显然,“导入”与正常的导入语句冲突。 So the function looks like 所以功能看起来像

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

Since im using click library for parsing/building my commandline options, each function gets imported with its name. 由于即时通讯使用click库来解析/构建我的命令行选项,因此每个函数都将使用其名称导入。 But when i execute it, it fails. 但是当我执行它时,它失败了。

   def import(password):
            ^
   SyntaxError: invalid syntax

TLDR; TLDR; How can I specify a function that is already defined by python internals? 如何指定python内部已经定义的函数?

Renaming the function without changing click 's options would indeed rename your subcommand. 在不更改click的选项的情况下重命名该功能确实会重命名您的子命令。 However, click lets you use any function name you'd like, and provide the subcommand name you want to associate with it. 但是,单击可以使用所需的任何函数名称,并提供要与之关联的子命令名称。

For example, this will give you the subcommand import which will run the function my_import_func : 例如,这将为您提供子命令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()

Redefining built-in names is a bad idea. 重新定义内置名称不是一个好主意。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM