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

  • Marina and The Diamonds

    Marina and T

    8 Temmuz 2008
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011