python argparse 将 comamnds 的 2 个选项分开

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?