使用argparse 解析布林值
在argparse 中,解析布林命令列參數是一項常見任務,但嘗試時會出現常見的陷阱使用type=bool 參數解析“--foo True”或“--foo False”等值。令人驚訝的是,即使使用空字串作為參數(例如“--foo”),解析的值也會計算為 True。
為了正確的布林解析,argparse 提供了兩種推薦的方法:
規範方法:
使用'--feature' 和' --no-feature' 語法,由argparse 原生支援:
parser.add_argument('--feature', action=argparse.BooleanOptionalAction)
在下面的Python版本中3.9:
parser.add_argument('--feature', action='store_true')
parser.add_argument('--no-feature', dest='feature', action='store_false')
parser.set_defaults(feature=True)
使用此方法,「--feature」的存在將值設為 True,而「--no-feature」將其設為 False。缺少任一參數預設為 True。
可選方法(使用類型轉換):
如果需要“--arg
parser.add_argument("--arg", type=ast.literal_eval)
或者,可以建立使用者定義的函數:
def true_or_false(arg):
ua = str(arg).upper()
if 'TRUE'.startswith(ua):
return True
elif 'FALSE'.startswith(ua):
return False
else:
raise argparse.ArgumentTypeError('Invalid boolean value')
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3