pythonではgetoptモジュールでコマンドライン引数の処理ができますね。 それを使ったコードの中に、以前シェルスクリプト向けに作った簡易ヘルプ表示機能を実現してみました。
あまりpythonらしくない冗長なコードですがオイラの場合、いつものことです。動けばよかろうなのだァーッ!
import getopt,sys try: shortcmd="ho:" longcmd=["help","option="] opts,args=getopt.getopt(sys.argv[1:],shortcmd,longcmd) if len(opts)==0 and len(args)>1: firstarg=args[0] opts,args=getopt.getopt(sys.argv[2:],shortcmd,longcmd) args.append(firstarg) except getopt.GetoptError,e: # something getopterror happen print(str(e)) sys.exit(1) except IndexError: # no argument assigned pass for cmd,cmdarg in opts: if cmd=='-h' or cmd=='--help': import re,os ro=re.compile('^\s*#-+#\s*$') ofname=os.path.realpath(__file__) if ofname[-1]=='c': ofname=ofname[:-1] with open(ofname,'rt') as fp: cnt=0 for cl in fp.readlines(): if cnt==1: print cl.rstrip() m=ro.search(cl) if m: cnt+=1 sys.exit(0) #--------------------# elif cmd in ('-o','--option'): print("option=%s" % cmdarg) else: pass #--------------------#
これで#---#に挟まれた部分に次々にコマンドラインオプションの処理を書いていき…その部分が--helpオプションで表示される部分になります。
ユーザー=未来の自分自身は、--helpオプションを与えることで、そこに書かれたソースコードのコメントや処理などからどんなオプションなのか知る、ということにしております。
ブログのカテゴリ的には実はむしろライフハックかも。
これを自作のvimコードスニペットプラグインで、コード内にペタって貼り付けてひな形にしてます。 vimのスニペットプラグインは多種多様なものがあるのですが自分の場合、コードスニペットがほしくなった時点では、どうもしっくり来るものが無く*1、自作してしまいました。あまりに原始的かついい加減なものなので公表はしないでしょう…
*1:毎度ながら、探し方が足りない可能性が大