如何使用argparse準確解析布林值?

DDD
發布: 2024-10-26 14:05:30
原創
529 人瀏覽過

How to Parse Boolean Values Accurately with `argparse`?

使用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>
登入後複製
或者,如果"--arg ;”首選格式,ast.literal_eval 或自訂函數(如下所示)可以用作“type”參數:

以上是如何使用argparse準確解析布林值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!