python argparse 分隔命令的 2 个选项
python argparse separate 2 options of comamnds
我已经阅读了文档,但仍然无法弄清楚如何实现以下行为:
1.likes。在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', '--number', 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
显然,我正在等待聊天或喜欢的争论
P.S。由于 -n
常见参数,我收到一个错误,但即使评论它也不会像预期的那样工作
很难说出你理解了什么,什么对你有用。
这更像是评论,但足够长,我会让它回答。
那些 usage
行是您调用此脚本时使用的样本吗?你遇到了什么错误?
您是否尝试过scipt.py -h
查看帮助?
我没有看到 positional
参数可以接受像“聊天”或“喜欢”这样的字符串。我怀疑您想使用子命令机制,但要让基本的 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', metavar='', help='Set chance to like/dislike', default=70)
parser_chat = subparsers.add_parser('chat', help='chat help')
parser_chat.add_argument('-n', '--number', metavar='', help='number help', required=True)
parser_chat.add_argument('-t', '--text', metavar='', help='text help', required=True)
args = parser.parse_args()
我已经阅读了文档,但仍然无法弄清楚如何实现以下行为: 1.likes。在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', '--number', 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
显然,我正在等待聊天或喜欢的争论
P.S。由于 -n
常见参数,我收到一个错误,但即使评论它也不会像预期的那样工作
很难说出你理解了什么,什么对你有用。
这更像是评论,但足够长,我会让它回答。
那些 usage
行是您调用此脚本时使用的样本吗?你遇到了什么错误?
您是否尝试过scipt.py -h
查看帮助?
我没有看到 positional
参数可以接受像“聊天”或“喜欢”这样的字符串。我怀疑您想使用子命令机制,但要让基本的 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', metavar='', help='Set chance to like/dislike', default=70)
parser_chat = subparsers.add_parser('chat', help='chat help')
parser_chat.add_argument('-n', '--number', metavar='', help='number help', required=True)
parser_chat.add_argument('-t', '--text', metavar='', help='text help', required=True)
args = parser.parse_args()