代码之家  ›  专栏  ›  技术社区  ›  fmark

为什么使用argparse而不是optparse?

  •  259
  • fmark  · 技术社区  · 14 年前

    我注意到python2.7文档还包括另一个命令行解析模块。除了 getopt optparse argparse

    为什么还要创建另一个命令行解析模块?我为什么要用它来代替 光轴 ? 有什么新功能需要我了解吗?

    5 回复  |  直到 12 年前
        1
  •  330
  •   Cœur Gustavo Armenta    7 年前

    2.7 , optparse

    argparse 从它的原始页面列出的所有原因来看都更好( https://code.google.com/archive/p/argparse/ ):

    • 处理位置参数
    • 辅助子命令
    • + /
    • 处理零个或多个以及一个或多个样式参数
    • 为自定义类型和操作提供更简单的接口

    更多信息也在这里 PEP 389 ,哪个是 argparse参数 进入标准图书馆。

        2
  •  66
  •   Alex Martelli    14 年前

    optparse?他们的新特征是什么

    @我认为,尼古拉斯的回答很好地涵盖了这一点,但不是你开始提出的更“元”问题:

    为什么还有另一个命令行 解析模块是否已创建?

    当任何有用的模块被添加到标准库中时,这就是第一个难题:如果出现了一种更好但向后不兼容的方法来提供相同类型的功能,您该怎么办?

    email 包与处理类似问题的无数旧方法的比较也不是太遥远;-)。

    非常 更频繁地需要发布版本,实际上会因为在标准库中被“冻结”而受到很大的影响。。。但是,这确实是另一个问题)。

        3
  •  39
  •   Ned Batchelder    14 年前

    Python添加的最佳理由来源是它的PEP: PEP 389: argparse - New Command Line Parsing Module ,特别是题为, Why aren't getopt and optparse enough?

        4
  •  18
  •   lony    6 年前

    • 除了前面提到的不推荐的 光轴
    • 也有人提到,这是一个解决方案的人不愿意包括外部自由行。
    • docopt公司
    • 也是外部库,并使用修饰符定义参数(我的消息来源建议: Why Click )
    • 基于Inquirer.js的选择工具( repo )

    如果您需要更深入的比较,请阅读 this 最后你可能会使用 docopt公司 点击 . 多亏了凯尔·普顿!

        5
  •  6
  •   the Tin Man    10 年前

    起初,我和@fmark一样不愿意从optparse切换到argparse,因为:

    1. 我觉得差别没那么大。
    2. 相当多的VPS仍然默认提供Python2.6。

    然后我看到这个文档,argparse的性能优于optparse,特别是在谈到生成有意义的帮助消息时: http://argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html

    argparse vs. optparse “通过@Nicholas,我们可以在python中使用argparse<2.7(是的,我以前不知道。)

    现在我的两个问题得到了很好的解决。我写这篇文章是希望它能帮助其他有类似想法的人。

    推荐文章