パラメータ

サポートスクリプトの2つのタイプのパラメータをクリックします:オプションとパラメータです。コマンドラインスクリプトの作成者は,通常,どのコマンド行スクリプトをいつ使用するかに困惑しているため,ここでは異なる点を高速に概説する.その名の通り、オプションはオプションです。パラメータは合理的な範囲でオプションであってもよいが、それらはオプションの程度ではるかに制限されている。

オプションとパラメータの間での選択を支援するために、サブコマンドへの移行やファイル名/URLの入力などの操作に特化し、他のすべてのコンテンツをオプションとすることをお勧めします。

差異

パラメータの役割は選択肢よりも小さい.以下の機能はオプションにのみ適用されます。

  • 入力漏れの自動提示

  • マーク(ブール値や他の値)として機能する

  • 環境変数からオプション値を抽出することはできるが,環境変数からパラメータを抽出することはできない.

  • オプションはヘルプページに完全な文書レコードがありますが、パラメータはありません (this is intentional パラメータが具体的すぎて自動記録できないかもしれない)

一方,オプションとは異なり,パラメータは任意の数のパラメータを受け取ることができる.オプションは固定数のパラメータ(デフォルト値1)のみを厳密に受け取ることができ,使用可能である. 複数の選択肢 それがそうです。

パラメータタイプ

パラメータは異なるタイプであってもよい。タイプは、異なるアクションを使用して実現されてもよく、ボックスを開けてサポートされるタイプもあります。

strclick.STRING

Unicode文字列のデフォルトパラメータタイプを示します。

intclick.INT

整数のパラメータのみを受け取る.

floatclick.FLOAT

浮動小数点値のパラメータのみを受け取る.

boolclick.BOOL

ブール値のパラメータを受け取る.これは自動的にブールマークに使われる。文字列値“1”、“true”、“t”、“yes”、“y”、“on”に変換する True それがそうです。“0”、“False”、“f”、“no”、“n”、“off”に変換する False それがそうです。

click.UUID

UID値のパラメータを受け取る.これは自動的に推測するのではなく uuid.UUID それがそうです。

class click.File(mode='r', encoding=None, errors='strict', lazy=None, atomic=False)

パラメータを読み書き可能なファイルとして宣言する.コンテキストが中断されると(命令が完了した後)、ファイルは自動的にオフになる。

ファイルを開いて読み出しや書き込みを行うことができる.特殊な価値 - Stdinまたはstdoutはモードによって指示されます。

デフォルトの場合、ファイルはテキストデータを読み取るために開いているが、バイナリモードで開いたり、書き込みしたりしてもよい。符号化パラメータを使用して、特定の符号化を強制することができる。

♪the lazy フラグ制御ファイルはすぐに開くべきですか、それとも最初のIOで開くべきですか。標準入出力ストリームおよび読み出しのためのファイルを開く場合、デフォルト設定は不活性に設定されている。 lazy そうでなければ。読み出しのために怠惰にファイルを開いている場合には、そのファイルは一時的に開いて検証を行うが、1回目のIOまでは開いた状態を維持しない。書き込みのために開いた場合、Lazyは主に有用であり、必要な前にファイルを作成しないようにする。

Click 2.0からは,自動的にファイルを開くことも可能であり,この場合,すべての書き込み内容が同一フォルダ中の1つの個別ファイルに格納され,完了後,そのファイルは元の位置に移動される.他のユーザが定期的に読み取ったファイルを修正すれば,この機能は非常に有用である.

ファイルパラメータ より多くの情報を得ることができます

class click.Path(exists=False, file_okay=True, dir_okay=True, writable=False, readable=True, resolve_path=False, allow_dash=False, path_type=None)

経路タイプは File タイプですが、それは違う検査を実行します。まず,開いたファイルハンドルを返さず,ファイル名のみを返す.二番目に、それはファイルやディレクトリが何であるべきかに関する様々な基本的なチェックを実行することができる。

Changelog

バージョン 6.0 で変更: allow_dash 入れられました。

パラメータ
  • exists -- Trueに設定すると,この値を有効にするためにファイルやディレクトリが存在する必要がある.これが必要ではなく、ファイルが存在しない場合、さらなるすべての検査は暗黙的にスキップされるであろう。

  • file_okay -- 制御ファイルが可能な値であるかどうか。

  • dir_okay -- ディレクトリが可能な値であるかどうかを制御する.

  • writable -- Trueであれば書き込み可能チェックを実行する.

  • readable -- Trueであれば,可読チェックを実行する.

  • resolve_path -- もし真であれば,その値を渡し続ける前にその経路を完全に解析する.これは絶対的であり,記号リンクが解析されていることを意味する.これはshellのみで行われなければならないので、代数プレフィックスを拡張しないだろう。

  • allow_dash -- これを設定すると True 標準ストリームを表すために、単一の破折番号を使用することが許可される。

  • path_type -- オプションで、パスを表す文字列タイプに適用されます。黙認する. None これは,返り値がバイトまたはUnicodeとなり,特にClickが扱う入力データの中で最も意味のある値に依存することを意味する.

class click.Choice(choices, case_sensitive=True)

選択タイプは、固定されたサポートされた値のセットに対してある値をチェックすることを可能にします。これらの値はすべて文字列でなければならない.

あなたは1つのオプションリストまたはタプルだけを渡さなければなりません。生成器のような他の反復可能なコードは、驚くべき結果を生成する可能性がある。

結果値は常に最初に伝達される選択肢の1つであり,いずれにしても case_sensitive どんなものでも ctx.token_normalize_func 指定されています。

オプションを選択する 例を挙げましょう

パラメータ

case_sensitive -- Falseに設定することで、大文字と小文字を区別しないように選択することができます。デフォルトはtrueです。

class click.IntRange(min=None, max=None, min_open=False, max_open=False, clamp=False)

制限 click.INT 値は許容可能な値範囲に設定されている.見 範囲オプション それがそうです。

もし min あるいは…。 max 渡さなければ,その方向に任意の値を受け取る.もし min_open あるいは…。 max_open 対応する境界はその範囲に含まれない.

もし clamp イネーブル時には、範囲外の値は失敗ではなく境界にクランプされる。

バージョン 8.0 で変更: 追加 min_open そして max_open パラメータです。

class click.FloatRange(min=None, max=None, min_open=False, max_open=False, clamp=False)

制限は click.FLOAT 値は許容可能な値範囲に設定されている.見 範囲オプション それがそうです。

もし min あるいは…。 max 渡さなければ,その方向に任意の値を受け取る.もし min_open あるいは…。 max_open 対応する境界はその範囲に含まれない.

もし clamp イネーブル時には、範囲外の値は失敗ではなく境界にクランプされる。いずれかの境界がマークされていれば,この操作はサポートされない. open それがそうです。

バージョン 8.0 で変更: 追加 min_open そして max_open パラメータです。

class click.DateTime(formats=None)

DateTimeタイプ日付文字列を変換する datetime 物体です。

選択されたフォーマット文字列は構成可能ですが、デフォルトはいくつかの一般的な(タイムゾーンをサポートしていない)ISO 8601フォーマットです。

指定すると DateTime フォーマットは、リストまたはタプルのみを転送すべきである。生成器のような他の反復可能なプログラムは、驚くべき結果を生成する可能性がある。

フォーマット文字列使用 datetime.strptime そこで,これは許可されたフォーマット文字列を定義する.

各フォーマットを順に使用して解析を試み、解析に成功した第1のフォーマットを使用する。

パラメータ

formats -- A list or tuple of date format strings, in the order in which they should be tried. Defaults to '%Y-%m-%d', '%Y-%m-%dT%H:%M:%S', '%Y-%m-%d %H:%M:%S'.

カスタムパラメータタイプはサブクラス化によって実現できる. click.ParamType それがそうです。簡単な場合には、失敗したPython関数を転送して返します。 ValueError 励まされなかったが、支持された。

パラメータ名

パラメータ(オプションおよびパラメータ)には名前があり、値を使用して修飾関数を呼び出すと、その名前がPythonパラメータ名として使用されます。

パラメータは1つの位置名のみである.ヘルプテキストで使用するための他の名前を提供する場合は、参照されたい ヘルプテキストを遮断しています それがそうです。

オプションは、複数の名前を有することができ、これらの名前は、プレフィックスとして1つまたは2つの破折番号を有することができる。1つの破れ記号を有する名前は短いオプションとして解析され、2つの破折番号を有する名前は長いオプションとして解析される。名前に接頭辞がない場合は、オプション名として解析することなく、Pythonパラメータ名として使用します。そうでなければ、2つの短い線プレフィックスを有する最初の名前が使用されるか、または2つの下線プレフィックスを有する名前が1つない場合、最初の1つの短い線プレフィックスを有する名前が使用される。プレフィックスを削除し、破れた番号を下線に変換してPythonパラメータ名を取得します。

カスタムタイプを実現する

カスタムタイプを実現するためには ParamType 級友たち。書き直す convert() メソッドは値を文字列から正しいタイプに変換する.

以下のコードは、通常の整数に加えて、16進数および8進数を受け入れ、それらを従来の整数に変換する整数タイプを実装する。

import click

class BasedIntParamType(click.ParamType):
    name = "integer"

    def convert(self, value, param, ctx):
        try:
            if value[:2].lower() == "0x":
                return int(value[2:], 16)
            elif value[:1] == "0":
                return int(value, 8)
            return int(value, 10)
        except TypeError:
            self.fail(
                "expected string for int() conversion, got "
                f"{value!r} of type {type(value).__name__}",
                param,
                ctx,
            )
        except ValueError:
            self.fail(f"{value!r} is not a valid integer", param, ctx)

BASED_INT = BasedIntParamType()

♪the name 属性はオプションであり,文書に用いる.電話をかける fail() もし変換に失敗したら。♪the param そして ctx パラメータは None 場合によっては、例えば、提示がある。