我有一个带有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')
我要更改命令行以接受多个标志(结果可以按任何顺序排列)。
答案 0 :(得分:0)
标志应为布尔值,默认情况下argparse
将参数添加为字符串。您可以做的是在添加参数时使用action='store_true'
。
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')