gpt4 book ai didi

python - Ruby optparse 限制

转载 作者:太空狗 更新时间:2023-10-29 21:32:09 26 4
gpt4 key购买 nike

我目前使用 Python 编写脚本,但出于多种原因我希望尝试使用 Ruby。在上周,我查看了大量示例代码并阅读了大量文档。我担心的一点是 Ruby 中缺少合适的命令行参数解析库。 Ruby 专家,不要生我的气——也许我不知道。这就是我来这里的原因。

在 Python 中,我习惯于使用 argparse,我认为它非常完美(也许满足我的需要)。不幸的是,OptionParser 没有 argparse 的灵 active 和功能。

我现在特别关注以下限制:

  1. 如何制作相互排斥的选项列表?例如名为 test 的程序的一个非常小的选项列表。

    usage: test [-h] [-a | -b | -c] [-d] [filename]

    我可以写一些代码:

    # implement a ----------------------------------------------
    opts.on( "-a", "--alpha",
    "implement alpha") do
    #...
    end

    等等。但是,我没有办法让 abc 相互排斥,除非我编写它们的排列并进行一些错误处理.例如

    test -ab #should through an error

    在 Python 中,我可以用一种非常简单的方式做到这一点:

    # create an command line argument parser object
    cmd_line_parser = argparse.ArgumentParser()

    # create a mutually exclusive group
    cmd_line_group = cmd_line_parser.add_mutually_exclusive_group()
    1. 其次,我无法将 -d-a 配对,除非我专门为此排列编写代码。这太疯狂了。

    2. 我必须自己编写[OPTION] 列表;除非我对所有可能的输入排列进行黑盒测试并将它们映射到黑盒列表,否则我无法知道我是错还是对。

    3. 此外,强制参数再次需要使用特殊代码处理。

是否可以使用 optparse 或 Ruby 中的其他库轻松处理这些约束?

最佳答案

docopt具有 Python 和 Ruby 实现的库。 测试程序的规范是:

usage: test [-h] [-a | -b | -c] [-d] [<filename>]

a,b,c选项互斥(-ab会报错),支持组合选项:-ad,-da

要使 filename 参数成为必需参数:

usage: test [-h] [-a | -b | -c] [-d] <filename>

关于python - Ruby optparse 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com