若 nargs=N,N为一个数字,则要求该参数提供 N 个值,如:
>>> parser.add_argument('--foo', nargs=2) >>> print(parser.parse_args(['--foo', 'a', 'b'])) Namespace(foo=['a', 'b']) >>> print(parser.parse_args(['--foo', 'a', 'b', 'c'])) usage: [-h] [--foo FOO FOO] : error: unrecognized arguments: c若 nargs=?,则要求改参数提供 0 或 1 个值,如:
>>> parser.add_argument('--foo', nargs='?') >>> parser.parse_args(['--foo']) Namespace(foo=None) >>> parser.parse_args(['--foo', 'a']) Namespace(foo='a') >>> parser.parse_args(['--foo', 'a', 'b']) usage: [-h] [--foo [FOO]] : error: unrecognized arguments: b若 nargs=*,则要求改参数提供 0 或多个值,如:
>>> parser.add_argument('--foo', nargs='*') >>> parser.parse_args(['--foo']) Namespace(foo=[]) >>> parser.parse_args(['--foo', 'a']) Namespace(foo=['a']) >>> parser.parse_args(['--foo', 'a', 'b', 'c', 'd', 'e']) Namespace(foo=['a', 'b', 'c', 'd', 'e'])若 nargs=?,则要求改参数至少提供 1 个值,如:
>>> parser.add_argument('--foo', nargs='+') >>> parser.parse_args(['--foo', 'a']) Namespace(foo=['a']) >>> parser.parse_args(['--foo']) usage: [-h] [--foo FOO [FOO ...]] : error: argument --foo: expected at least one argument 小节在了解了参数动作和参数类别后,是不是渐渐开始对使用 argparse 胸有成竹了呢?至少,用现在学到的知识来完成简单的命令行工具已经不再话下了。
在下一篇文章中,我们来继续深入了解 argparse 的功能,如何修改参数前缀,如何定义参数组,如何定义嵌套的解析器,如何编写自定义动作等,让我们拭目以待吧~
欢迎关注 HelloGitHub 公众号,获取更多开源项目的资料和内容
『讲解开源项目系列』启动——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎联系我们给我们投稿,让更多人爱上开源、贡献开源~