引数—ドキュメントをクリックします
引数
引数は options と同様に機能しますが、定位置です。 また、構文上の性質により、オプションの機能のサブセットのみをサポートします。 Clickはまた、あなたのために引数を文書化しようとはせず、醜いヘルプページを避けるために手動で文書化することを望んでいます。
基本的な議論
最も基本的なオプションは、1つの値の単純な文字列引数です。 タイプが指定されていない場合はデフォルト値のタイプが使用され、デフォルト値が指定されていない場合はタイプは STRING と見なされます。
例:
そしてそれはどのように見えるか:
可変個引数
2番目に一般的なバージョンは、特定の(または無制限の)数の引数が受け入れられる可変個引数です。 これは、nargs
パラメーターで制御できます。 -1
に設定されている場合、無制限の数の引数が受け入れられます。
次に、値はタプルとして渡されます。 nargs=-1
に設定できる引数は1つだけであることに注意してください。これは、すべての引数を使い果たすためです。
例:
そしてそれはどのように見えるか:
これは、このアプリケーションを作成する方法ではないことに注意してください。 この理由は、この特定の例では、引数が文字列として定義されているためです。 ただし、ファイル名は文字列ではありません。 それらは特定のオペレーティングシステム上にある可能性がありますが、必ずしもすべてにあるとは限りません。 これを書くためのより良い方法については、次のセクションを参照してください。
空でない可変個引数に関する注記
argparse
を使用している場合は、nargs
を+
に設定して、少なくとも1つの引数が必要であることを示すサポートがない可能性があります。
これは、required=True
を設定することでサポートされます。 ただし、可変引数が空の場合、スクリプトは正常に機能低下してヌープになると考えられるため、回避できる場合は使用しないでください。 これは、コマンドラインからのワイルドカード入力を使用してスクリプトが呼び出されることが非常に多く、ワイルドカードが空の場合でもエラーが発生しないためです。
ファイル引数
すべての例はすでにファイル名で機能しているので、ファイルを適切に処理する方法を説明することは理にかなっています。 コマンドラインツールは、-
をstdin / stdoutを参照する特別なファイルとして受け入れるという、Unixの方法でファイルを操作する場合にさらに楽しくなります。
Clickは、ファイルをインテリジェントに処理する click.File タイプを通じてこれをサポートします。 また、PythonのすべてのバージョンでUnicodeとバイトを正しく処理するため、スクリプトの移植性が非常に高くなります。
例:
そしてそれが何をするのか:
ファイルパス引数
前の例では、ファイルはすぐに開かれました。 しかし、ファイル名だけが必要な場合はどうでしょうか。 単純な方法は、デフォルトの文字列引数タイプを使用することです。 ただし、ClickはUnicodeベースであるため、文字列は常にUnicode値になることに注意してください。 残念ながら、ファイル名は、使用されているオペレーティングシステムに応じて、Unicodeまたはバイトにすることができます。 そのため、タイプが不十分です。
代わりに、このあいまいさを自動的に処理する Path タイプを使用する必要があります。 意味に応じてバイトまたはUnicodeを返すだけでなく、存在チェックなどの基本的なチェックも実行できます。
例:
そしてそれが何をするのか:
ファイルを開く際の安全性
FileType
タイプには、対処する必要のある問題が1つあります。それは、ファイルをいつ開くかを決定することです。 デフォルトの動作は、それについて「インテリジェント」です。 これが意味するのは、stdin / stdoutを開き、ファイルを開いてすぐに読み取ることです。 これにより、ファイルを開くことができない場合にユーザーに直接フィードバックが提供されますが、ファイルを特別なラッパーで自動的にラップすることにより、IO操作が初めて実行されたときにのみファイルが開かれます。
この動作は、lazy=True
またはlazy=False
をコンストラクターに渡すことで強制できます。 ファイルが遅延して開かれると、 FileError が発生して、最初のIO操作が失敗します。
書き込み用に開かれたファイルは通常、すぐにファイルを空にするため、レイジーモードは、開発者がこれが意図された動作であると絶対に確信している場合にのみ無効にする必要があります。
レイジーモードを強制することも、リソース処理の混乱を避けるために非常に役立ちます。 ファイルをレイジーモードで開くと、ファイルを閉じる必要があるかどうかを判断するのに役立つclose_intelligently
メソッドを受け取ります。 これはパラメーターには必要ありませんが、stdoutのようなストリームが開かれたか(以前に開かれていたか)、または必要な実際のファイルがわからないため、 prompt()関数を使用して手動でプロンプトを表示するために必要です。閉鎖。
Click 2.0以降、atomic=True
を渡すことでアトミックモードでファイルを開くこともできます。 アトミックモードでは、すべての書き込みは同じフォルダー内の別のファイルに送られ、完了すると、ファイルは元の場所に移動されます。 これは、他のユーザーが定期的に読み取るファイルが変更されている場合に役立ちます。
環境変数
オプションと同様に、引数も環境変数から値を取得できます。 ただし、オプションとは異なり、これは明示的に名前が付けられた環境変数でのみサポートされます。
使用例:
そしてコマンドラインから:
その場合、最初の変数が選択されるさまざまな環境変数のリストにすることもできます。
一般に、この機能はユーザーに多くの混乱を引き起こす可能性があるため、お勧めしません。
オプションのような引数
オプションのように見える引数を処理したい場合があります。 たとえば、-foo.txt
という名前のファイルがあるとします。 この方法でこれを引数として渡すと、Clickはそれをオプションとして扱います。
これを解決するために、ClickはPOSIXスタイルのコマンドラインスクリプトが行うことを実行します。つまり、オプションと引数の区切り文字として文字列--
を受け入れます。 --
マーカーの後、それ以降のすべてのパラメーターは引数として受け入れられます。
使用例:
そしてコマンドラインから:
--
マーカーが気に入らない場合は、ignore_unknown_optionsをTrueに設定して、不明なオプションをチェックしないようにすることができます。
そしてコマンドラインから: