optparse を使ってからしばらく時間が経ちましたが、ドキュメントと古いプログラムを簡単に調べてみました。
" -f/-s、-e/-d は必須オプションですが、-f&-s は一緒に使用できません。また、-e&-d オプションと同じように - 一緒に使用することもできません。チェックを入れるにはどうすればよいですか? "
相互排他性については、次のように自分で確認する必要があります。
parser.add_option("-e", help="e desc", dest="e_opt", action="store_true")
parser.add_option("-d", help="d desc", dest="d_opt", action="store_true")
(opts, args) = parser.parse_args()
if (parser.has_option("-e") and parser.has_option("-d")):
print "Error! Found both d and e options. You can't do that!"
sys.exit(1)
ここのオプションの例はブール値であるため、上記の if 行を次のように置き換えることができます。
if (opts.e_opt and opts.d_opt):
詳細については、 「optparse がエラーを処理する方法」セクションを参照してください。
" -w オプション (使用する場合) を oa 値と一緒に、または値なしで使用するにはどうすればよいですか? "
私は、値がオプションである optparse オプションを使用する方法を考え出したことがありません。私の知る限り、オプションを設定して値を設定するか、値を設定しないようにする必要があります。最も近いのは、値が必要なオプションのデフォルト値を指定することです。その場合、そのエントリをコマンド ラインで指定する必要はありません。サンプルコード:
parser.add_option("-w", help="warning", dest="warn", default=0)
(うまくいけば役立つ)提案とは別に:
ドキュメントを見た場合、「必須オプション」が矛盾した表現であるという部分を見たことがありますよね? ;-p ユーモアはさておき、次のようにインターフェイスを再設計することを検討することをお勧めします。
- 「オプション」を使用して必要な情報が入力されていません。
- 1 つの引数 (または引数のグループ) のみが、相互に排他的なデータを入力します。つまり、"-e" または "-d" の代わりに、"-e on" または "-e off" を使用します。「-v」で詳細表示、「-q」で非表示/詳細表示オフのようなものが必要な場合は、値を 1 つの変数に格納できます。
parser.add_option("-v", help="verbose on", dest="verbose", action="store_true")
parser.add_option("-q", help="verbose off", dest="verbose", action="store_false")
この特定の例は、セクションブール値 (フラグ) オプションの処理から借用されています (わずかに拡張されています) 。このようなものについては、グループ化オプションのセクションもチェックしてください。私はこの機能を使用したことがないので、これ以上は説明しません。