Pythonはargparseモジュールを利用してスクリプトコマンド行のパラメータ解析を実現します。


study.pyの内容は以下の通りです

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
__author__ = 'shouke'
 
import argparse
 
def argparseFunc():
 '''
   argparse            
     :
  python study.py -i 172.19.7.236 -p 8080 -a -r
  python study.py --ip 172.19.7.236 --port 7077 --auth -w -v True
 '''
 
 parser = argparse.ArgumentParser(description="study.py usage help document")
 #              
 parser.add_argument("-i", "--ip", help="ip addr") #  : -h、--help     ,   
 parser.add_argument("-p", "--port",help="host port")
 
 #             (# action = store_true             ,        True #   action       
 #       ,              ,   ,              
 parser.add_argument("-a", "--auth", help="if auth need", action="store_true")
 
 
 #       (      -r -w        )
 exclusive_group = parser.add_mutually_exclusive_group()
 exclusive_group.add_argument("-r","--read", help="read enabled" , action="store_true")
 exclusive_group.add_argument("-w","--write", help="write enabled", action="store_true")
 
 #               
 parser.add_argument('-v') # show verbose
 
 #             
 parser.add_argument('-V', help="version")
 
 ARGS = parser.parse_args() #        
 print('ARGS:', ARGS)
 
 #        
 if ARGS.ip: #   ,      ,        
 print("host addr is: %s" % ARGS.ip)
 
 if ARGS.port:
 print("host port is: : %s" % ARGS.port)
 
 if ARGS.auth:
 print("auth need: : %s" % ARGS.auth)
 
 if ARGS.read:
 print("read enabled: %s" % ARGS.read)
 
 if ARGS.write:
 print("write enabled: %s" % ARGS.write)
 
argparseFunc()
テストを実行

python study.py -i 172.19.7.236 -p 8080 -a -r
python study.py --ip 172.19.7.236 --port 7077 --auth -w -v True
結果は以下のとおりです

python study.py -i127.0.0.1 #   ,              
結果は以下のとおりです

python study.py -notExists 1
結果は以下のとおりです

上記のように、上記のコード実装は単一のモジュールスクリプトに対して、複数のモジュールの中でどうすればいいですか?解決方法はパッケージをクラスとし、具体的には「コード実践2」を参照してください。
ハコード実践2

argument_parser.py
 
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
 
'''
@Author : shouke
'''
 
 
import argparse
 
class ArgParser(object):
 '''
       
 '''
 
 
 def __init__(self, none_exclusive_arguments, exclusive_arguments, description=''):
  self.parser = argparse.ArgumentParser(description=description)
 
  self.add_none_exclusive_arguments(none_exclusive_arguments)
  self.add_exclusive_arguments(exclusive_arguments)
 
 def add_none_exclusive_arguments(self, options:list):
  '''
        (     )
  :param options    list  ,  
  [
   '"-a", "--all", help="do not ignore entries starting with ."',
   '"-b", "--block", help="scale sizes by SIZE before printing them"',
   '"-C", "--color", help="colorize the output; WHEN can be 'never', 'auto'"',
   '"-flag", help="make flag", action="store_true"', # action="store_true"             ,     true,   action="store_false"       false
  ]
    ,  list   argparse.ArgumentParserlei add_argument           ,add_argument    add_argument(self, *args,**kwargs)
  '''
 
  for option in options:
   eval('self.parser.add_argument(%s)' % option)
 
 
 def add_exclusive_arguments(self, options:list):
  '''
        
  :param options    list,    
  [
   ('"-r","--read",help="Read Action",action="store_true"',
   '"-w","--write",help="Write Action",action="store_true"')
  ]
 
  '''
  for option_tuple in options:
   exptypegroup = self.parser.add_mutually_exclusive_group()
   for item in option_tuple:
    eval('exptypegroup.add_argument(%s)' % item)
 
 
 @property
 def args(self):
  return self.parser.parse_args()
xxx.pyで引用します。パラメータ解析器が果たすべき役割を果たすためには、スクリプトの一番上にパラメータ解析オブジェクトを構築することを推奨します。
study.pyの内容は以下の通りです

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
__author__ = 'shouke'
 
from argument_parser import ArgParser
 
none_exclusive_arguments = [
 '"-ip", help="           "',
 '"-projectId", help="       id"',
 '"-runEnv", help="           "',
 '"-logLevel", help="    "',
 '"-masterHost", help="master    "',
 '"-masterPort", help="master    "'
]
 
exclusive_arguments = [
 
 ('"-r", "--read", help="Read Action",action="store_true"',
 '"-w", "--write", help="Write Action",action="store_true"')
]
 
 
args = ArgParser(none_exclusive_arguments, exclusive_arguments).args
 
print(args)
print(args.ip)
print(args.read)
テストを実行

python study.py -i 127.0.0.1 -r
運転結果は以下の通りです

ここでPythonについてはargparseモジュールを利用してスクリプトコマンドラインのパラメータ解析を実現する文章を紹介します。これに関連してPythonがスクリプトコマンドラインのパラメータ解析内容を実現するために、以前の記事を検索したり、下記の関連記事を引き続き閲覧したりしてください。これからもよろしくお願いします。