【Python】CLIコマンドライクな引数処理を行う
CLIコマンドライクな引数処理を行う
語彙力が死亡していますが、pythonで作成したバッチプログラムに引数を与えて、コンフィグファイルを編集できるようにしました。>
コードはこんな感じです。
# 定数定義
COND_DAY:str = "day"
COND_WEEK:str = "week"
COND_MONTH:str = "month"
COND_YEAR:str = "year"
COND_NONE:str = "none"
# コンディション一覧を初期化
self.lstCond = [self.COND_DAY, self.COND_WEEK, self.COND_MONTH, self.COND_NONE]
parser = argparse.ArgumentParser(description="脆弱性評価管理システム")
# オプションを定義
parser.add_argument(self.PARAM_SEARCH_COND, choices=self.lstCond, required=False, help="検索対象期間")
parser.add_argument(self.PARAM_LOG_DIR, required=False, help="ログファイルの保管場所")
# searchcond が指定されている場合
if args.searchcond != None:
isUpdateConfupdate = True
# 検索対象期間を指定
if args.searchcond == self.COND_DAY:
self.confData[CVSSCommonFunction.CONF_KEY_CONDITIONDATE] = CVSSCommonFunction.CONF_SEARCH_COND_DAY
elif args.searchcond == self.COND_WEEK:
self.confData[CVSSCommonFunction.CONF_KEY_CONDITIONDATE] = CVSSCommonFunction.CONF_SEARCH_COND_WEEK
elif args.searchcond == self.COND_MONTH:
self.confData[CVSSCommonFunction.CONF_KEY_CONDITIONDATE] = CVSSCommonFunction.CONF_SEARCH_COND_MONTH
elif args.searchcond == self.COND_YEAR:
self.confData[CVSSCommonFunction.CONF_KEY_CONDITIONDATE] = CVSSCommonFunction.CONF_SEARCH_COND_YEAR
elif args.searchcond == self.COND_NONE:
self.confData[CVSSCommonFunction.CONF_KEY_CONDITIONDATE] = CVSSCommonFunction.CONF_SEARCH_COND_NONE
# ログファイルの保管場所 が指定されている場合
if args.logdir != None:
# ログファイルの保管場所を指定
isUpdateConfupdate = True
wkdir = args.logdir
# ディレクトリの存在有無とディレクトリであるかを確認
if os.path.exists(wkdir) and os.path.isdir(wkdir):
self.confData[CVSSCommonFunction.CONF_KEY_FILEOUT_DIRECTORY] = wkdir
else:
error_code = CVSSCommonFunction.ERROR_CODE_NOT_FOUND
err_msg = f"入力されたログファイル保管場所に指定されたディレクトリが存在しないか、ディレクトリではありません。"
与えるパラメータ値が誤っているとこのような感じでパラメータの表示をしてくれます。
神
$ python CVSSDownloaderBatch.py --usedbms sqlite3
usage: CVSSDownloaderBatch.py [-h] [--searchcond {day,week,month,none}]
[--logdir LOGDIR] [--outputdir OUTPUTDIR]
[--usedbms {mysql,sqlite}] [--hostname HOSTNAME]
[--dbname DBNAME] [--user USER]
[--password PASSWORD] [--sqlitedir SQLITEDIR]
CVSSDownloaderBatch.py: error: argument --usedbms: invalid choice: 'sqlite3' (choose from 'mysql', 'sqlite')
コメント
コメントを投稿