【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')

コメント

このブログの人気の投稿

【python】PySide6 におけるウィンドウとかダイアログボックス内のアイテムの自動調整

脆弱性評価システムを作る〜CVSSとは〜

dict型オブジェクトを内包するlistオブジェクトのコピー