問題:
使用argparse 解析布林命令列參數時,為什麼值會發生參數時,為什麼值會發生參數變化像“--foo False”評估為True 而不是False?
答案:
規範方法:
建議的方法是使用以下格式:
command --feature
建議的方法是使用以下格式:
command --no-feature
要否定該功能,請使用:
Python 3.9 : parser.add_argument('--feature', action= argparse.BooleanOptionalAction)
parser.add_argument('--feature', action='store_true') parser.add_argument('--no-feature', dest='feature', action='store_false') parser.set_defaults(feature=True)
自訂>
import ast def t_or_f(arg): ua = str(arg).upper() if 'TRUE'.startswith(ua): return True elif 'FALSE'.startswith(ua): return False else: pass # Handle error condition appropriately
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval) parser.add_argument("--my_bool", type=t_or_f)</code>自我定義的解析方法:如果首選「--foo True/False」格式,則一個選項是使用ast.literal_eval 或自訂函數作為類型:此自訂函數將大寫True/ False 解釋為布林值,允許靈活解析這些值。
以上是為什麼使用 argparse 解析布林參數時「--foo False」計算結果為 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!