」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在argparse中正確解析布林值?

如何在argparse中正確解析布林值?

發佈於2024-11-23
瀏覽:205

How Can I Parse Boolean Values Correctly in argparse?

使用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 ”語法,可以使用自訂類型轉換函數。一個範例是ast.literal_eval:

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