首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python argparse 位置参数 可选值 默认值

python argparse 位置参数 可选值 默认值

原创
作者头像
大大刺猬
发布2023-01-14 13:19:21
发布2023-01-14 13:19:21
3.5K0
举报
文章被收录于专栏:大大刺猬大大刺猬

记录一下在py中使用argparse解析位置参数时, 位置参数设置为choice(列表)时, 默认值的问题.

算个小坑吧, 所以记录一下.

直接使用default

先来看看直接使用default的情况. 我们的想法是 第一个位置参数为 start/stop/status 第二个位置参数为monitor/transclient/all, 没写的时候默认为 status all

代码语言:python
复制
import argparse
parser = argparse.ArgumentParser(add_help=True, description='ei client')
parser.add_argument('action', default='status', choices=['start','stop','status'], action='store', )   
parser.add_argument('service', default='all', choices=['monitor','transclient','all'], action='store', )   
parser.add_argument('--config', '-c', action='store', dest="config", default='ei.yaml', )
parser_instance = parser.parse_args()
print(parser_instance.action, parser_instance.service)

测试结果如下:

发现并没有达到我们的预期, 默认值未生效

其实官方有说明的...

配合nargs使用default

代码语言:python
复制
import argparse
parser = argparse.ArgumentParser(add_help=True, description='ei client')
parser.add_argument('action', nargs='?', default='status', choices=['start','stop','status'], action='store', )
parser.add_argument('service', nargs='?', default='all', choices=['monitor','transclient','all'], action='store', ) 
parser.add_argument('--config', '-c', action='store', dest="config", default='ei.yaml', )
parser_instance = parser.parse_args()
print(parser_instance.action, parser_instance.service)

现在就符合预期结果了.

其实后来发现官网也有说明, 只是之前看的时候没有看仔细....

附python官网configparser链接: https://docs.python.org/zh-cn/3.11/library/configparser.html

官网资料很全的, 仔细看, 慢慢看.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 直接使用default
  • 配合nargs使用default
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档