click概要Pythonでコマンドライン引数を扱う際に便利なclickについて、ありがちなケースでの使い方についてまとめる。簡易な例として、name(string)とage(int)の2つの引数を取るコードを書いてみる。下記のようにデコレータで引数を指定することで、関数の引数にコマンドライン引数をマッピングできる。disp_person()実行してみる。30--helpも実装される。exit.型が違うとエラーになる。下記はintを指定しているageに文字列を渡した場合。integer引数を指定しない場合はNoneが入る。intを指定していても未指定だとNoneで通る。None指定できる型については別途まとめたのでそちらを参照。必須チェックrequired=Trueを指定すると必須チェックが行われる。age))引数なしで実行した結果。"--name".デフォルト値の設定defaultオプションでデフォルト値を設定する。age))引数なしで実行した結果。自動でデフォルト値が設定される。26envvarを指定するとデフォルト値に環境変数が入る。下記はHOSTという環境変数を参照する。click.echo('host={}'.format(host))HOSTを設定しつつスクリプトを実行する。YAGIという名前のホストで実行。host=YAGIenvvarとdefaultが同時に指定された場合は、まずenvvarを解決してなければdefaultが使われる。短縮名の指定optionには複数の引数名を指定できる。Luiginame=Luigi3つ以上パラメータを付けることもできる。その場合の名前も指定できる。--name2の3つの名前が指定可能で、渡される引数の名前はnameとする。click.echo('name={}'.format(name))実行例。指定しているが、渡される関数にはnameとして渡される。ようなオプション指定なしで引数を受け渡す。指定すると長さがnの配列として引数が渡る。nを-1にすると可変長。nに3を指定した場合。disp()3つ値を渡すとtupleで値が渡る。'Koopa')3つでないとエラーになる。arguments@click.optionでnargsに-1を指定するとエラーになる。click.echo(names)可変長で値が受け取れる。指定すると可変長で値を渡せる。click.echo(names)実行例。promptを指定するとパラメータが指定されていない場合はプロンプトで入力を受け付けるようになる。下記はnameとpasswordの入力を求める例。passwordは非表示にして2回入力を求める。引数チェックを入れたい場合はcallbackでチェック関数を指定して、チェックに引っかかったらclick.BadParameterをraiseする。callbackでは引数を任意の型に変換できる。例として引数がaから始まる場合のみ許可するvalidate処理を書いてみる。disp()aから始まれば許可。alainname=alainaでなければエラー。aeagerとcallbackで特例の引数設定--versionのような他の引数とは違った振る舞いをする場合は、is_eagerとcallbackを利用して他の関数に処理を移譲できる。is_eagerを設定し、バージョン表示をさせてた後にexitさせている。requirerdになっているのでnameが先に評価されるとエラーになってしまうが、--versionがis_eagerになっているので必ずprint_versionが先に呼び出される。1.0例えば--versionからis_eagerを外して--nameに付けると先にnameのrequiredが評価されてエラーになる。MLFlowの機能をざっと試す第二弾。(1)リンク株式会社iMindスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。