在 Python 中使命令行参数可选

Rge*_*eek 1 python command-line-arguments argparse

我正在使用 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)
Run Code Online (Sandbox Code Playgroud)

我保存了这个a.py然后运行这个:

$ python a.py --quality 10
You gave quality = 10
Run Code Online (Sandbox Code Playgroud)

我也希望我的代码即使没有提供命令行参数也能运行。我想让它成为可选的。如果它提供了,那么它需要一个可以进一步使用的特定值。

我的代码中有这样的东西:

 if int(quality)==10:
Run Code Online (Sandbox Code Playgroud)

所以如果我不带参数运行:

 $ python a.py
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

TypeError: int() 参数必须是字符串或数字,而不是“NoneType”

msh*_*ldt 5

我想你想要:

parser.add_argument("--quality", 
                    type=int,
                    default=10,
                    help="enter some quality limit")
Run Code Online (Sandbox Code Playgroud)

将类型指定为 int 并指定所需的默认值。你遇到的问题是因为你没有给参数一个默认值(通过default关键字参数)所以如果它没有在命令行中指定,它默认为None, int(quality) 正在窒息。将 设置typeint上述可完全避免进行强制转换int()