如何解决python argparse 将 comamnds 的 2 个选项分开
我已经阅读了文档,但仍然无法弄清楚如何实现以下行为: 1.喜欢。在 tinder 中给用户指定数量的赞(未来,这可能包含更多选项,例如“性别”、“频率”、“年龄”等) 2.在tinder上给给定数量的人写一段给定的文字(未来可能还会有更多选择)。
这是我的代码:
parser = argparse.ArgumentParser(description='Badoo liker',epilog='Enjoy the program! :)')
# I also tried "add_mutually_exclusive_group" instead of "add_argument_group"
chat_args = parser.add_argument_group(title='chat_args')
chat_args.add_argument('-c','--chat',help='chat help')
chat_args.add_argument('-t','--text',help='text help')
chat_args.add_argument('-n','--number',help='n help')
like_args = parser.add_argument_group(title='like_args')
like_args.add_argument('-l','--like',help='like help')
like_args.add_argument('-n',help='n help')
args = parser.parse_args()
Usage:
$script.py chat --text 'Hello world' -n 20 # Var 1
$script.py liking -n 20 # Var 2
显然,我在等待争论,要么是为了聊天,要么是为了喜欢
附言由于 -n
常见参数,我收到一个错误,但即使评论它也不会按预期工作
解决方法
很难说出您理解的内容以及对您有用或不适合的内容。
这更像是评论,但足够长,我会回答。
那些 usage
行是您调用此脚本时使用的示例吗?您遇到了什么错误?
您是否尝试过 scipt.py -h
查看帮助?
我没有看到 positional
参数接受像“chat”或“like”这样的字符串。我怀疑你想使用子命令机制,但让基本的 argparse 工作。
我经常建议包含一个 print(args)
行来清楚地了解解析器做了什么。虽然很明显,当 argparse
引发错误时,您不会看到这一点。
推迟使用群组,直到您掌握了基础知识。 argument_group
只是在帮助显示中对参数进行分组。 mutually_exclusive_group
是一种解析工具,如果您尝试使用组中的多个项目,它会发出警告。
最终,我做到了,下一个代码(显然)满足了我的问题
# "metavar=''" -just hide redundant double --key KEY word
parser = argparse.ArgumentParser(description='Badoo liker',epilog='Enjoy the program! :)')
subparsers = parser.add_subparsers(help='')
parser_like = subparsers.add_parser('like',help='like help')
parser_like.add_argument('-n','--number',metavar='',help='Set count of likes',default=49)
parser_like.add_argument('-f','--frequency',help='Set chance to like/dislike',default=70)
parser_chat = subparsers.add_parser('chat',help='chat help')
parser_chat.add_argument('-n',help='number help',required=True)
parser_chat.add_argument('-t','--text',help='text help',required=True)
args = parser.parse_args()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。