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

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • amc

    amc

    21 EYLÜL 2005
  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007