CLI功能:如何在同一命令行中运行许多标志

时间:2018-07-17 04:55:05

标签: python python-3.x

我有一个带有3个函数的代码,可以使用argparse在另一个文件中测试3个函数。我为每个测试功能分配了一个标志。他们按照预期运行。

 $python code_test.py -w
    words_containing passed

...其中len_safe是l分配给的函数。 -w被分配给一个称为单词包含的函数。 我的目标是输入以下内容:

 $python code_test.py -w -l
    len_safe passed
    words_containing passed

...目前,当我尝试此操作时:

 $python code_test.py -u -l
    usage: HW3_test.py [-h] [-w WORDS] [-l LEN] [-u UNIQUE]
    HW3_test.py: error: argument -w/--words: expected one argument

以下是我的代码:

    parser = argparse.ArgumentParser()
    parser.add_argument('-w','--words',help='Words')
    parser.add_argument('-l','--len',help='len')
    parser.add_argument('-u','--unique',help='unique')
    args = parser.parse_args()
    elif args.words == "W" :
        if test_words_containing() == True:
            print('words_containing pass')
        else:
            print('words_containing fail')
    elif args.words == "l" :
        if test_len_safe() == False:
            print('len_safe fail')
        else:
            print('len_safe pass')

我要更改命令行以接受多个标志(结果可以按任何顺序排列)。

1 个答案:

答案 0 :(得分:0)

标志应为布尔值,默认情况下argparse将参数添加为字符串。您可以做的是在添加参数时使用action='store_true'

请参阅:TrySkipIisCustomErrors

parser = argparse.ArgumentParser()
parser.add_argument('-w','--words', action='store_true', help='Words')
parser.add_argument('-l','--len', action='store_true', help='len')
parser.add_argument('-u','--unique', action='store_true', help='unique')
args = parser.parse_args()
if args.words:
    if test_words_containing() == True:
        print('words_containing pass')
    else:
        print('words_containing fail')
if args.len:
    if test_len_safe() == False:
        print('len_safe fail')
    else:
        print('len_safe pass')