Pythonはargparseモジュールを利用してスクリプトコマンド行のパラメータ解析を実現します。
6495 ワード
study.pyの内容は以下の通りです
上記のように、上記のコード実装は単一のモジュールスクリプトに対して、複数のモジュールの中でどうすればいいですか?解決方法はパッケージをクラスとし、具体的には「コード実践2」を参照してください。
ハコード実践2
study.pyの内容は以下の通りです
ここでPythonについてはargparseモジュールを利用してスクリプトコマンドラインのパラメータ解析を実現する文章を紹介します。これに関連してPythonがスクリプトコマンドラインのパラメータ解析内容を実現するために、以前の記事を検索したり、下記の関連記事を引き続き閲覧したりしてください。これからもよろしくお願いします。
#!/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がスクリプトコマンドラインのパラメータ解析内容を実現するために、以前の記事を検索したり、下記の関連記事を引き続き閲覧したりしてください。これからもよろしくお願いします。