コマンドラインプログラムのコードを書いていて、getopt()
関数を使用しています。誰かが options / long_options 構文を説明できますか?
getopt.getopt(args, options[, long_options])
私の質問はこれです:
リストが引数間で断片化されているのはなぜですか? なぜそれはオプションです[オプションではありませんか?
この関数には、2 つの必須引数 (args
およびoptions
) と、必須ではないオプション ( long_options
) が 1 つあります。args
、options
およびの正確な意味はlong_options
すべてドキュメントに記載されています
基本的に、コマンドラインを次のように解析する場合:
myprogram --foo=bar
次に、long_options
次のようなリストが必要ですが、次のよう['--foo=']
に解析する場合:
myprogram -f bar
にoptions
設定し'f:'
ます。もちろん、好きなだけ混ぜて合わせることができます。
その価値のために、 or (さらに良い)getopt
を支持して使用することは決してお勧めしません。これらの後者の 2 つのモジュールを使用すると、ハンマーを使用して新しいコンピューターを構築しようとしているような気分になります...optparse
argparse
getopt
現在非推奨になっているargparse
代わりに使用する必要があります。getopt
説明については、ドキュメントに実際にアクセスできます。
あなたの特定の質問については、そこに答えがあると思います:
(これとそれについて読んで、なぜ を使用すべきかを理解してください。ドキュメントにargparse
もgetopt
(sic) と記載されています) C の getopt() 関数に慣れていないユーザーや、より少ないコードを記述してより適切なヘルプとエラー メッセージを取得したいユーザーは、使用を検討する必要があります。代わりに argparse モジュールを使用してください。 ")
AFTER LAST EDIT : ドキュメントでプロトタイプの一部が角括弧で囲まれている場合、慣例により、その部分はオプションであり、前の部分は必須であることを意味します。呼び出したいときgetopt.getopt()
は、 valuateargs
と options` を使用します。
これはgetopt.getopt(args, options, [long_options])
、最後のコンマも必須であることを意味するからではありませんが、呼び出しgetopt.getopt(args, options,)
た場合、有効な python 式ではありません。
AFTER LAST COMMENT : まあ、その構文は、UNIX プラットフォームに存在するほとんどすべてのツールで使用される規則です...どこかで定義されているかどうかはわかりませんが、POSIX 仕様よりも古いものであったとしても驚かないでしょう。自体!私が見つけることができた唯一の「ドキュメント」は、次のウィキペディアのページですが、参照がありません。
オプションの引数に角括弧を使用するように指示するcaltech のコース (参照セクション「使用ステートメントのオプションの引数」) を見つけました。
最後に、スタック オーバーフローについてここで質問するのはあなたが初めてではありません。同じ件名で少なくとも 2 つの質問があります。
システムのマンページを見ると、それらすべてがその構文を使用していることがわかります。角括弧内のすべてのパラメーターはオプションです。たとえば、 ls
manpage、cat
manpage、macos のマンページでさえopen
その規則を使用しています!
今回はあなたの質問に答えられたことを願っています!
引数args
とoptions
は必須の引数であり、 long_options は関数のオプションの引数です。つまり、提供される場合と提供されない場合があります。のような長いオプションをサポートする場合は、コマンド ライン ユーティリティで指定し
--format
ます -f
。
ls
で始まるオプションと長いオプションの両方を示すLinux ユーティリティの例--
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabeti‐
cally if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author <--- LONG OPTIONS OF COMMAND LINE
with -l, print the author of each file