コマンドラインオプションパーサ

Cのgetopt()のように、コマンドラインオプションを実現するには、getoptを用いる。sys.argvでもよいのだけど、オプションを指定させたいときはgetoptを用いる。

getoptの書式は


getopt(args, options[,long_options])
argsには引数リスト,optionsにはスクリプトに認識させたいオプションの文字を指定する。オプションが引数を持つ場合は、文字の後に:を指定する。long_optionsにはロングオプションをリストで指定する。argsの引数リストは、プログラム名を除いたリストを指定すればよいので、通常はsys.argv[1:]と書けばよい。

例えばURLとプロキシをオプション引数として取り、さらにヘルプ表示なんかもしたいときは、以下のように書く。


opts, args = getopt.getopt(sys.argv[1:], "u:p:h", ["url=", "proxy=", "help"])
optsにはオプションと指定した引数,argsにはオプションを指定しないでに書いた引数格納される。前者は(option, value)のタプルのリスト、後者はリストで返される。

opts : [('--url', 'www.foo.com'), ('--proxy', 'bar.com')]
args : ['hoge', 'fuga']
オプションごとに処理を振り分ける

for o, a in opts :
if o in ("--url", "-u) :
url = a
elif o in ("--proxy", "-p")
proxy = a