2016-04-17 8 views
0

Imは、いくつかのデータをインポートできる小さなpythonコマンドラインツールを記述しています。Pythonで "import"という関数をどのように定義できますか?

使い方は明らかに

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

、通常の輸入なステートメントを持つ "インポート" 競合のように見えます。だから、関数が私のコマンドラインオプションを構築/解析するためclickライブラリを使用してイムので

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

のように見え、各機能は、その名前でインポートされます。しかし、私がそれを実行すると失敗します。

def import(password): 
      ^
    SyntaxError: invalid syntax 

TLDR;どのように私はすでにPython内部で定義されている関数を指定することができますか?

+0

** def Import()のように1文字の大文字と小文字を変更することができます:**。 – Pavan

+1

なぜそれは 'import'と呼ばれなければなりませんか? –

+0

'def import_(password):'を使うことができます。本当の疑問は、なぜそれが「輸入」になる必要があるかということです。 'import_password'を使うかもしれません。これを回避することは良い考えではありません。キーワードを上書きしないという理由は非常にあります。したがって、許可されていません。 – zondo

答えて

1

clickのオプションを変更せずに関数の名前を変更すると、実際にはサブコマンドの名前が変更されます。ただし、Clickを使用して任意の関数名を使用して、関連付けるサブコマンド名を指定することができます。例えば

、これはあなたの機能my_import_funcを実行するimportサブコマンドを与える:組み込みの名前

#!/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() 

再定義は悪い考えです。

関連する問題