【发布时间】:2014-08-03 05:00:52
【问题描述】:
我正在使用 ArgParse 在 Python 中提供命令行参数。
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)
我将其保存为a.py,然后运行:
$ python a.py --quality 10
You gave quality = 10
即使没有提供命令行参数,我也希望我的代码运行。我想让它成为可选的。如果它提供了,那么它需要一个可以进一步使用的特定值。
我的代码中有这样的东西:
if int(quality)==10:
所以如果我不带参数运行:
$ python a.py
我得到这个错误:
TypeError: int() 参数必须是字符串或数字,而不是 'NoneType'
【问题讨论】:
-
Erm...它已经是可选的。事实上,即使没有指定
--quality选项,您编写的代码也会运行。您可以使用default关键字参数指定默认值。 -
@Luigi 这个问题是关于使位置参数成为可选的。正如 Bakuriu 所指出的,以
-开头的参数已经是可选的。 -
我添加了我遇到的错误。
-
默认值为
None。您需要更改默认值或编写可以处理None的代码。 -
我喜欢在使用
argparse开发时包含print(args)。在这种情况下,它会清楚地显示quality=None。
标签: python command-line-arguments argparse