0

コマンドラインプログラムのコードを書いていて、getopt()関数を使用しています。誰かが options / long_options 構文を説明できますか?

getopt.getopt(args, options[, long_options])

私の質問はこれです:

リストが引数間で断片化されているのはなぜですか? なぜそれはオプションです[オプションではありませんか?

4

3 に答える 3

2

この関数には、2 つの必須引数 (argsおよびoptions) と、必須ではないオプション ( long_options) が 1 つあります。argsoptionsおよびの正確な意味はlong_optionsすべてドキュメントに記載されています

基本的に、コマンドラインを次のように解析する場合:

myprogram --foo=bar

次に、long_options次のようなリストが必要ですが、次のよう['--foo=']に解析する場合:

myprogram -f bar

options設定し'f:'ます。もちろん、好きなだけ混ぜて合わせることができます。

その価値のために、 or (さらに良い)getoptを支持して使用することは決してお勧めしません。これらの後者の 2 つのモジュールを使用すると、ハンマーを使用して新しいコンピューターを構築しようとしているような気分になります...optparseargparsegetopt

于 2013-06-12T18:31:30.130 に答える
0

現在非推奨になっているargparse代わりに使用する必要があります。getopt説明については、ドキュメントに実際にアクセスできます。

あなたの特定の質問については、そこに答えがあると思います:

(これそれについて読んで、なぜ を使用すべきかを理解してください。ドキュメントにargparsegetopt(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 つの質問があります。

システムのマンページを見ると、それらすべてがその構文を使用していることがわかります。角括弧内のすべてのパラメーターはオプションです。たとえば、 lsmanpagecatmanpage、macos のマンページでさえopenその規則を使用しています!

今回はあなたの質問に答えられたことを願っています!

于 2013-06-12T18:31:54.543 に答える
0

引数argsoptionsは必須の引数であり、 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
于 2013-06-12T18:35:18.820 に答える