零个或一个参数

Ban*_*ndo 4 python argparse

当参数可以带有零个或一个参数时,我必须使用哪个操作?我必须运行这样的代码,并将设置为默认值 4(此变体退出时出错)

--pretty-xml
error: argument --pretty-xml: expected one argument
Run Code Online (Sandbox Code Playgroud)

但我也可以运行这样的代码

--pretty-xml = 2 
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样

parameter.add_argument('--pretty-xml',  dest="pretty", action="append", default=[4])
Run Code Online (Sandbox Code Playgroud)

需要更改什么才能同时适用于两个选项参数?谢谢

fal*_*tru 8

您需要使用nargs参数 with?defaultandconst参数:

'?'. 如果可能,将从命令行使用一个参数,并作为单个项目生成。如果不存在命令行参数,则将生成默认值。...


parser.add_argument('--pretty-xml', dest='pretty', default=4, const=5, nargs='?', type=int)
Run Code Online (Sandbox Code Playgroud)

n如果调用 like --pretty-xml=n,或者5调用 like--pretty-xml或 4 如果--pretty-xml命令行上根本不存在,则该值将具有值。

注意:用于type=int检查类型并转换为 int 类型。否则,如果指定了参数,则返回 string,如果未指定参数,则返回 int 4。