【问题标题】:python argparse separate 2 options of comamndspython argparse 分隔命令的 2 个选项
【发布时间】:2021-08-05 13:22:19
【问题描述】:

我已阅读文档,但仍然无法弄清楚如何实现以下行为: 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', '--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

显然,我正在等待聊天或喜欢的争论

附:由于-n common 参数,我收到了一个错误,但即使评论它也不会像预期的那样工作

【问题讨论】:

    标签: python argparse


    【解决方案1】:

    很难说出你理解什么以及什么对你有用或没用。

    这更像是一个评论,但足够长,我会回答。

    那些usage 行是您在调用此脚本时使用的示例吗?你得到什么错误?

    您是否尝试过scipt.py -h 来查看帮助?

    我没有看到positional 参数可以接受像“聊天”或“喜欢”这样的字符串。我怀疑你想使用子命令机制,但让基本的 argparse 工作。

    我经常建议包含print(args) 行,以便清楚地了解解析器做了什么。虽然很明显你不会在argparse 引发错误时看到这一点。

    推迟使用组,直到掌握基本知识。 argument_group 只是在帮助显示中对参数进行分组。 mutually_exclusive_group 是一个解析工具,如果您尝试在组中使用多个项目,它会报错。

    【讨论】:

    • 感谢有关 sub_parser 和 argument_group 的提示!
    【解决方案2】:

    最终,我做到了,下一个代码(显然)符合我的问题

    # "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()
    

    【讨论】:

      猜你喜欢
      • 2013-11-11
      • 2011-07-31
      • 2011-09-17
      • 2023-03-13
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      相关资源
      最近更新 更多