pythonでのオプションパース
仕事の関係で簡単なツールをpythonで作ったりします。
オプション周りが面倒だと思い、今まで固定順番での指定をしていたのですが、オプションの簡単な対応方法を見つけました。
getoptモジュールを利用する
pythonのモジュールでgetoptというものがありこれがうまい具合にオプションの解析をしてくれる。
import sys import getopt if __name__ == '__main__': if len( sys.argv ) == 1: sys.exit() try: argv = sys.argv[1:] shortName = "v:h:d:" # -ショート名の指定 -v など[オプション名:]で1セット longName = ["version", "help", "directory="] # オプション名の後ろに=を付けることで値を受け取れる opts, args = getopt.getopt( argv, shortName, longName ) except getopt.GetoptError: print( "エラー" ) sys.exit() print( opts ) # オプション内容 print( args ) # オプションとして指定されていない引数 for o, a in opts: if o in ("-h", "--help" ): print( "ヘルプ" ) if o in ( "-v", "--version" ): print( "バージョン番号" ) if o in ("-d", "--directory" ): print( "-d param" + a )
こうすればオプションの判定などいろいろと一気に楽になりました。
C言語とかにもあるらしいが全然知らなかったです。。。
ただ、作るツールがデータ読み込んでファイル吐き出すだけとかそんな簡単なものなので使うかどうかがわからないという