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

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

勉強会に行ってきました。

前々から興味のあったcocos2d-xの勉強会に行ってきました。

 

メリット・デメリットの部分に関しては想像していた様な内容で自分の考えは間違ってはいないだなと少しホッとした。

けど話し聞いてて思ったのはどっかの記事でゲームエンジンと紹介されていたけどスライドには「2Dフレームワーク」との記載。

自分としてもエンジンとは捉えていないで2Dライブラリ的なものだと思っていたからいいんだけど、そうするとエンジンって紹介されてたのはなんなんだろうかと少し疑問に思ってしまった。

 

最近になって勉強会とか行くようになったんですけどやはり経験者の話ってためになるなあと実感。

中の人だけが知ってる情報とかたくさん聞けるので自分の知らない情報がたくさん入ってきて将来的にきっと役にたってくれるはず。。。

話し聞いてても面白そうだったで早速明日あるcocos2d-xの初心者向けのハンズオンに予約をしてみた。

明日も更新できるといいな。

(懇親会も少し参加してみたけど人見知りする俺にはきつい場所だった。

もっと気軽に構えていい場所だと思うけど自分から動けないこのチキンorz)