pythonモジュールargparse使用例の詳細


argparseはpython内蔵モジュールで、コマンドラインをすばやく作成します.サードパーティモジュールClickでも実現できる機能がありますが、それぞれメリットとデメリットがありますので、個人のニーズを見てみましょう.
公式ホームページ
https://docs.python.org/3.5/library/argparse.html
import  argparse
__version__ = '1.1.1'
parser = argparse.ArgumentParser(description='hahahaaaa')
parser.add_argument('-V', '--version', action='version', version='%(prog)s '+__version__)
parser.add_argument('--name','-n',metavar='namemma',dest='name',type=str,help='your name',nargs=1)
parser.add_argument('-i',metavar='III',action='store_const',dest='iiii',const='ii',help="dfafsdf")
parser.add_argument("-z", choices=['a', 'b', 'd'],required=False)
parser.add_argument('foo')
args = parser.parse_args()

print(type(args))
print(args.name,args.iiii,args.foo)

ArgumentParserパラメータの簡単な説明
epilog-コマンドラインヘルプの末尾文字
Prog-(default:sys.argv[0])プログラムの名前は、一般的に変更する必要はありません.また、helpでプログラムの名前を使用する必要がある場合は、%(prog)sを使用します.
 prefix_chars-コマンドの接頭辞、デフォルトは-f/--fileなどです.一部のプログラムでは、prefix_を使用して/fのようなオプションをサポートしたい場合があります.chars="/"
 fromfile_prefix_chars-(default:None)コマンドラインパラメータをファイルから読み込む場合に使用できます.たとえばfromfile_prefix_chars='@'、コマンドラインパラメータの1つが「@args.txt」、args.txtの内容はコマンドラインパラメータとして使用されます
 add_help--h/-helpオプション(default:True)を追加するかどうかは、一般的にhelp情報が必要なので設定しなくてもいいです.
 
add_Argument:複数のパラメータを呼び出すコマンドラインパラメータを読み込みます.
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
name or flags:オプションパラメータまたは位置パラメータ(ファイル名の列)を受け入れる必須パラメータです.
'--'を持たないパラメータ
スクリプトを呼び出すときは値を入力する必要があります
パラメータ入力の順序はプログラムで定義した順序と一致する
'-'のパラメータ
add_を入力しないでください.argument("-a")
'--'のあるshortnameに似ていますが、プログラム内の変数名は定義されたパラメータ名です.
'--'パラメータ
パラメータ別名:大文字と小文字を区別する1文字のみ
    add_Argument(「-shortname」、「--name」、help=「params means」)ですが、コードではshortnameは使用できません
dest:プログラム内のパラメータに対応する変数名add_argument("a",dest='code_name')
default:パラメータのデフォルト
help:パラメータ作用解釈add_argument("a", help="params means")
type:デフォルトstring add_argument("c", type=int)
metavar:パラメータの名前は、ヘルプ情報を表示するときに使用します.
    action:
store:デフォルトactionモードで、指定した変数に値を格納します.
        store_const:格納値はパラメータのconstセクションで指定され、ブール以外のコマンドラインflagを実現するために多く使用されます.
        store_true/store_false:ブールスイッチ.2つのパラメータで1つの変数に対応できます.
append:リストに値を格納します.このパラメータは繰り返し使用できます.
        append_const:リストに値を格納し、パラメータのconstセクションで値を指定します.
count:統計パラメータの略記入力の個数add_argument("-c", "--gc", action="count")
バージョン情報を出力して終了します.
const:action="store_const|append_const"と組み合わせて使用し、デフォルト値
choices:入力値の範囲add_argument("--gb", choices=['A', 'B', 'C', 0])
required:通常-fのようなオプションはオプションですが、required=Trueであれば必須です
nsrgsはパラメータの個数を指定するために用いられ、1,2,3...である.でもいいですか?または*または+
        ? ゼロまたは1
*0個以上
+1つ以上
サブparseを作成し、各サブparseは独自の入力パラメータに対応します.
import argparse

# sub-command functions
def subcmd_list(args):
   print "list"

def subcmd_create(args):
   print "create"

def subcmd_delete(args):
   print "delete"

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='commands')

# A list command
list_parser = subparsers.add_parser('list', help='Listcontents')
list_parser.add_argument('dirname', action='store',	help='Directory tolist')
list_parse.set_defaults(func=subcmd_list)

# A create command
create_parser = subparsers.add_parser('create', help='Create a directory')
create_parser.add_argument('dirname',action='store',help='New directoryto create')
create_parser.add_argument('--read-only',default=False, action='store_true',help='Setpermissions to prevent writing to the directory')
create_parser .set_defaults(func=subcmd_create)

# A delete command
delete_parser = subparsers.add_parser('delete',help='Remove a directory')
delete_parser.add_argument(	'dirname', action='store',help='The directory to remove')
delete_parser.add_argument('--recursive', '-r',default=False, action='store_true',help='Remove thecontents of the directory, too')
delete_parser .set_defaults(func=subcmd_delete)

args = parser.parse_args()
# call subcmd
args.fun(args)

ヘルプの使用
# python args_subparse.py -h
usage: args_subparse.py [-h] {create,list,delete} ...
positional arguments:
  {create,list,delete}  commands
    list                Listcontents
    create              Create a directory
    delete              Remove a directory
optional arguments:
  -h, --help            show this help message and exit
  
# python args_subparse.py create -h
usage: args_subparse.py create [-h] [--read-only] dirname
positional arguments:
  dirname      New directoryto create
optional arguments:
  -h, --help   show this help message and exit
  --read-only  Setpermissions to prevent writing to the directory
  
# python args_subparse.py delete -h
usage: args_subparse.py delete [-h] [--recursive] dirname
positional arguments:
  dirname          The directory to remove
optional arguments:
  -h, --help       show this help message and exit
  --recursive, -r  Remove thecontents of the directory, too
 
# python args_subparse.py list -h
usage: args_subparse.py list [-h] dirname
positional arguments:
  dirname     Directory tolist
optional arguments:
  -h, --help  show this help message and exit
複数のsubparserは、同じ定義のパラメータを使用します.
# add_help=False,    ,   -h    
parents_parser = argparse.ArgumentParser(add_help=False)
parents_parser.add_argument('--foo', dest="foo", action='store_true')
parents_parser.add_argument('--bar', dest="bar", action='store_false')
parents_parser.add_argument('--baz', dest="baz", action='store_false')

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='commands')
m_parser = subparsers.add_parser("mysql", parents=[parents_parser], help="mysql method")
m_parser.set_defaults(func=sub_mysql)
o_parser = subparsers.add_parser("oracle", parents=[parents_parser], help="oracle method")
o_parser.set_defaults(func=sub_oracle)
args = parser.parse_args()