2016-03-20 5 views
1

基本的なコマンドライン機能を実装しようとしています。click.commandの結果を別の関数に渡す

私は引数としてファイルを渡すことができる必要がありますので、それを読んでさらに結果を渡してください。

しかし、何らかの理由で期待通りに機能しません。

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()に追加している場合、出力に何かが表示されます。

+0

そこ定義であれば、どのように引数なしで 'タッチを()'を実行することができます1つは必要ですか? – Ilja

+0

@Ilja 'クリック'がフードの中でそれを処理します –

答えて

1

残念ながら、clickを使用すると、関数が決して値を返さないようになります。 click.echoを使用して値をフロントエンドに出力できますが、関数の実行が終了した時点では値を返すことはできません。言い換えれば、click.commandでラップすると関数として動作しなくなり、代わりにコマンドラインプログラムになります。

optparseを使用して、達成しようとしていることを達成することもできます。

リソース - 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?

関連する問題