SORU
21 ŞUBAT 2013, PERŞEMBE


ayrıştırma argparse boolean değerleri

Argparse komut satırı boolean değişken olarak yazılı ayrıştırmak için kullanmak istiyorum "" ya da "foo Yanlış". ----foo Doğru Örneğin:

my_program --my_boolean_flag False

Ancak, aşağıdaki test kodunu istiyorum ne yapmaz:

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)

Ne yazık ki, parsed_args.my_bool True olarak değerlendirir. Bu cmd_line bool("") False evalutates beri şaşırtıcı olan ["--my_bool", ""], ben değişiklik bile böyledir.

Nasıl "False", "F" ve onların ayrıştırmak için küçük harf False olmak türevleri argparse alabilir miyim?

CEVAP
21 ŞUBAT 2013, PERŞEMBE


Daha kurallı bunu yapmanın yolu üzerinden bence

command --feature

ve

command --no-feature

argparse güzel bu sürüm destekler:

parser.add_argument('--feature', dest='feature', action='store_true')
parser.add_argument('--no-feature', dest='feature', action='store_false')
parser.set_defaults(feature=True)

Eğer gerçekten --arg <True|False> sürümü istiyorsanız tabii ki, ast.literal_eval olarak geçirmek "tip", ya da bir kullanıcı tanımlı işlevi ...

def t_or_f(arg):
    ua = str(arg).upper()
    if ua == 'TRUE'[:len(ua)]:
       return True
    elif ua == 'FALSE'[:len(ua)]:
       return False
    else:
       pass  #error condition maybe?

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010
  • HBO

    HBO

    17 Mayıs 2006
  • karneson

    karneson

    23 Temmuz 2006