【发布时间】:2021-03-06 05:45:41
【问题描述】:
我有以下脚本,它只是解析命令行中传递的参数
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='My test script')
parser.add_argument('-somearg', dest='somearg', type=str, required=True, help='Help yourself')
parser.add_argument("-somemorearg", dest='somemorearg', action='store_true', help='Help yourself') # Treated as boolean if passed in
parser.add_argument("-somemoreargagain", dest='somemoreargagain', action='store_true', help='Help yourself') # Treated as boolean if passed in
args = parser.parse_args()
print('Your input was: ' + args.somearg)
if args.somemorearg == True:
print('Second parameter is true: ')
if args.somemoreargagain == True:
print('Second parameter is true: ')
以下是我调用有效脚本的方式:
python my_script.py -somearg xyz -somemorearg -somemoreargagain
上面很棒!
但是如果我调用我的脚本时有如下轻微的拼写错误,那也可以吗?这是python的奇怪行为!请注意,在下面的调用中,我在最后一个参数中缺少n,它应该是somemoreargagain
python my_script.py -somearg xyz -somemorearg -somemoreargagai
上述行为在 python 中是默认的吗?我想让脚本在参数检查中严格。
如果传入的参数不准确匹配,如何让脚本抛出错误?我希望我的脚本只接受-somearg、-somemorearg 和-somemorearg
我正在使用 Python 3+
【问题讨论】:
-
请注意我的问题是“如果条件不匹配,如何让脚本抛出错误?”
-
allow_abbrev参数是最近添加的,让您可以控制缩写的处理。但是您也可以选择足够不同(且短)的参数标志,以使这种错误是不可能的。您的懒惰用户会为此感谢您。
标签: python python-3.x argparse