使用argparse 解析布林值
使用argparse 解析布林命令列參數時,通常會遇到所需行為不同的情況從實際輸出來看。當參數指定為“--foo True”或“--foo False”時,會發生這種情況。
要解決此問題,必須深入研究程式碼:
<code class="python">import argparse parser = argparse.ArgumentParser(description="My parser") parser.add_argument("--my_bool", type=bool) cmd_line = ["--my_bool", "False"] parsed_args = parser.parse(cmd_line)</code>
令人驚訝的是,儘管指定「False」作為參數,parsed_args.my_bool 的計算結果為 True。當 cmd_line 修改為 ["--my_bool", ""] 時,這種異常現像也會持續存在,邏輯上應評估為 False。
解決方案
克服此挑戰要準確解析布林值,一種建議的方法是採用更傳統的樣式:
command --feature
和
command --no-feature
argparse 毫不費力地支持這種格式:
Python 3.9 以上:
<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
<code class="python">parser.add_argument('--feature', action='store_true') parser.add_argument('--no-feature', dest='feature', action='store_false') parser.set_defaults(feature=True)</code>
以上是如何使用argparse準確解析布林值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!