プログラミングメモ帳

プログラミングで躓いた部分を中心としたIT土方的メモ。

argparseでハイフン入りオプションを使う

前略、pythonのargparseは非常に便利です。

add_argument()の第一引数 name に対して--fooのような文字列を与えてやると、parse_args()で得られるオブジェクトに対して.fooでアクセスし値を取ってこれる、という便利な実装になっています。 具体的にはこういう感じになります。

if __name__ == '__main__':
  parser = argparse.ArgumentParser(description=u'サンプル')
  parser.add_argument("--foo")
  args = parser.parse_args()
  
  if args.foo':
    print 'これで取れる'

ただ、一つだけよくわからないことがあります。 これ、nameにハイフンが含まれた時どうすんの?

というわけで実験しました。

if __name__ == '__main__':
  parser = argparse.ArgumentParser(description=u'サンプル')
  parser.add_argument("--hoge-fuga")
  args = parser.parse_args()
  
  if args.hoge_fuga':
    print 'これで取れる'

上記のように、--hoge-fugaというオプションは.hoge_fugaとしてアクセスが可能です。 ハイフンは自動でアンダースコアに置換されるようです。