Making Commandline Parameters Optional in Python
本问题已经有最佳答案,请猛点这里访问。
我使用argparse在python中提供命令行参数。
1 2 3 4 5 | import argparse parser = argparse.ArgumentParser() parser.add_argument("--quality", help="enter some quality limit") args = parser.parse_args() print"You gave quality = %s" % str(args.quality) |
我把这个保存为
1 2 | $ python a.py --quality 10 You gave quality = 10 |
我还希望我的代码运行,即使没有提供commandline参数。我希望它是可选的。如果提供了commandline参数,那么它需要一个特定的值,可以进一步使用。
我的代码中有这样的内容:
1 | if int(quality)==10: |
所以如果我不带参数运行:
1 | $ python a.py |
我得到这个错误:
typeerror:int()参数必须是字符串或数字,而不是"nonetype"
我想你想要:
1 2 3 4 | parser.add_argument("--quality", type=int, default=10, help="enter some quality limit") |
将类型指定为int并指定所需的默认值。您遇到的问题是,您没有给参数一个默认值(通过
直接从帮助文档中,首先阅读:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import argparse parser = argparse.ArgumentParser() parser.add_argument("square", type=int, help="display a square of a given number") parser.add_argument("-v","--verbosity", type=int, help="increase output verbosity") args = parser.parse_args() answer = args.square**2 if args.verbosity == 2: print"the square of {} equals {}".format(args.square, answer) elif args.verbosity == 1: print"{}^2 == {}".format(args.square, answer) else: print answer |
这是你问题的答案
1 2 3 4 5 6 7 8 9 10 | import argparse parser = argparse.ArgumentParser() parser.add_argument("--quality", help="enter some quality limit") args = parser.parse_args() if args.quality: #Optional parameter #act if it was provided print"You gave quality = %s" % str(args.quality) else: #what to do if it wasn't provided print"You failed to provide a quantity" |