关于python:为什么要使用argparse而不是optparse?

Why use argparse rather than optparse?

我注意到python 2.7文档还包括另一个命令行解析模块。除了getoptoptparse之外,我们现在还有argparse了。

为什么还要创建另一个命令行分析模块?我为什么要用它来代替optparse?有什么新功能我应该知道吗?


在Python 2.7optparsedeprecated,冰,和hopefully去将在未来。

argparse冰会更好的全是上市的原因对其原始网页(http code.google.com档案/ / / / / / P argparse):

  • 行动定位题元
  • 支持子commands
  • allowing替代选项prefixes +/鸭类
  • 行为零或更多的和一个或多个样式的题元
  • 生产更多的信息使用;
  • 提供一个更简单的接口类型和自定义的行为

更多的信息也在PEP 389冰,这是汽车城,argparse做为标准的图书馆。


Why should I use it instead of
optparse? Are their new features I
should know about?

"尼古拉斯的封面这好的答案,我想,但不是在更"元"的问题,你开始用:

Why has yet another command-line
parsing module been created?

这一困境的任何有用的当数模冰加两个标准库:当你做一个更好的backwards基本正常,但我的方式,提供相同的一种功能性emerges吗?

无论你棒与"老鸭admittedly surpassed(typically方式,当我们在谈论复杂的包装:asyncore Tkinter VS VS扭曲,Wx或QT,…),或者你的IP和多比正常的方式做同样的事情(XML解析器,恕我直言,甚至是个比这更好的实例的命令行解释器——但email包与T他无数的旧的方式处理与两个相似的问题不是太遥远或;-)。

你可以让threatening grumbles的文档(老有"的方式,但deprecated"(As Long As你需要保持一致性backwards)你不能真的把它们停止。没有大的移动,从两个重要的应用newer Python稿。

(第二的困境,你不直接相关的两个问题,summarized冰的老说"标准库冰包,好去死"。稿:每年都有个半或SO,包装,不甚,极不稳定,needing稿或比这更多,我市遭受基本可以被"冻结"的标准库。但是,那真的是一个不同的问题。


最好的理由,一个源码Python会增加其:PEP PEP argparse 389:新的命令行解析模块,特别是有资格的部分,为什么不optparse getopt鸭子了吗?


也有新的孩子在块!

  • 此外。在上述deprecated optparse。使用[不]
  • 我也argparse上述解决方案,这是一个不为人willing include外部库。
  • docopt外部库是一个值得看的,这一文件的字符串作为辨别你输入的分析器。
  • 单击库和外部的冰也太defining题元decorators辨别。(来源:为什么我recommends击)
  • Python的调查者选择为中心的工具和基于inquirer.js(回购)

如果你需要在一个更深入的比较,请你读这可能比使用IP docopt或击。两个凯尔普顿谢谢!


第一是reluctant fmark AA AA"两个开关从optparse两argparse,因为:

  • 在思想的巨大差异是不知道的。
  • 还提供了一些全新的VPS Python 2.6城市的默认。
  • 然后我看到这个医生,argparse outperforms optparse说的是什么,尤其是当发电meaningful帮助消息:/ / / / argparse.googlecode.com SVN主干/医生/ argparse-vs-optparse.html

    然后在广交会"argparse vs. optparse"城市"尼古拉说,我们可以有argparse<可用在Python 2.7(是的,我不知道之前。)

    现在我的问题是addressed双阱。在写这个希望它将帮助他人与mindset相似。