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

  • Dive In

    Dive In

    17 Temmuz 2013
  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • Matt Harding

    Matt Harding

    23 Mayıs 2006