読者です 読者をやめる 読者になる 読者になる

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言語とかにもあるらしいが全然知らなかったです。。。

ただ、作るツールがデータ読み込んでファイル吐き出すだけとかそんな簡単なものなので使うかどうかがわからないという