optparse にはヘルプと使い方の説明 (usage text) を生成する機能があり、 ユーザに優しいコマンドラインインタフェースを作成する上で役立ちます。 やらなければならないのは、各オプションに対するhelp の値と、 必要ならプログラム全体の使用法を説明する短いメッセージを与えることだけです。
ユーザフレンドリな (ドキュメント付きの) オプションを追加した OptionParser を以下に示します:
usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-v", "--verbose",
action="store_true", dest="verbose", default=True,
help="make lots of noise [default]")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose",
help="be vewwy quiet (I'm hunting wabbits)")
parser.add_option("-f", "--filename",
metavar="FILE", help="write output to FILE"),
parser.add_option("-m", "--mode",
default="intermediate",
help="interaction mode: novice, intermediate, "
"or expert [default: %default]")
optparse がコマンドライン上で"-h" や"-help" を
見つけた場合やユーザがparser.print_help() を呼び出した場合、
このOptionParser は以下のようなメッセージを標準出力に出力します:
usage: <yourscript> [options] arg1 arg2
options:
-h, --help show this help message and exit
-v, --verbose make lots of noise [default]
-q, --quiet be vewwy quiet (I'm hunting wabbits)
-f FILE, --filename=FILE
write output to FILE
-m MODE, --mode=MODE interaction mode: novice, intermediate, or
expert [default: intermediate]
(help オプションでヘルプを出力した場合、optparse は出力後に プログラムを終了します。)
optparse ができるだけうまくメッセージを生成するよう手助けするには、 他にもまだまだやるべきことがあります:
usage = "usage: %prog [options] arg1 arg2"
optparse は "%prog" を現在のプログラム名、すなわち
os.path.basename(sys.argv[0]) と置き換えます。この文字列は
詳細なオプションヘルプの前に展開され出力されます。
usage の文字列を指定しない場合、optparse は型どおりとはいえ
気の効いたデフォルト値、 "usage: %prog [options]" を
使います。固定引数をとらないスクリプトの場合はこれで十分でしょう。
-m MODE, --mode=MODE
ここで ``MODE'' はメタ変数 (meta-variable) と呼ばれます: メタ変数は、
ユーザが -m/--mode に対して指定するはずの
引数を表します。デフォルトでは、optparse は保存先の変数名を
大文字だけにしたものをメタ変数に使います。これは時として期待通りの結果に
なりません -- 例えば、上の例の--filename オプションでは
明示的に metavar="FILE" を設定しており、その結果自動生成された
オプション説明テキストは:
-f FILE, --filename=FILE
この機能の重要さは、単に表示スペースを節約するといった理由にとどまりません: 上の例では、手作業で書いたヘルプテキストの中でメタ変数として ``FILE'' を 使っています。その結果、ユーザに対してやや堅苦しい表現の書法 ``-f FILE'' と、より平易に意味付けを説明した ``write output to FILE'' との間に 対応があるというヒントを与えています。これは、エンドユーザにとってより明解で 便利なヘルプテキストを作成する単純でありながら効果的な手法なのです。
%default を入れられ
ます -- optparse は%default をデフォルト値の
str() で置き換えます。該当するオプションにデフォルト値がない場合
(あるいはデフォルト値が None である場合) %default の
展開結果は none になります。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。