来自python库的“更好的选择”,任何列表?

时间:2009-12-07 02:19:13

标签: python command-line-arguments argparse getopt optparse

我刚刚发现了optparse模块的存在。我个人总是使用getopt,所以我不在乎寻找更好的东西。然而,很明显,optparse更先进,所以我希望它是将来从命令行获取选项的首选方式。

无论如何,这件事让我印象深刻。我现在想知道是否有我从一开始就使用的模块或功能,在标准库中有更好的选择。是否有这样一个紧凑和快速浏览列表,喜欢“以前的解决方案:getopt。更好的解决方案:optparse(自python 2.x)”?

编辑按照约定标记为CW。

  • 解析命令行选项:getopt,optparse,argparse
  • 包管理:distutils,setuptools

4 个答案:

答案 0 :(得分:2)

我建议这可能是开始这样一个列表的好地方

请注意,pep389用argparse

替换optparse

collections.defaultdict在您使用dict.setdefault

的大多数地方效果更好

集合模块是一个很好的熟悉,因为它在Python3中有很多新东西

如果您不需要保留列表

,则生成器表达式通常比列表推导更好

三元运算符b if a else c代替a and b or c并解决所有问题

multiprocessing取代你正在做的任何其他方式;)

itertools.izip_longest避免在压缩不均匀的事物时使用变通方法

答案 1 :(得分:1)

不完全紧凑,只参考标准库(以及标准Python的其他部分)而不是任何第三方软件包,所有"What's New in Python X.X?"文章都有。

除此之外,还有谷歌,除了随机博客等,我认为没有任何此类列表。

答案 2 :(得分:0)

我不绝对同意“optparse优于getopt”的陈述。如果optparse套房更好,那并不意味着有人会发现getopt更为可取。它们用于不同的目的:getopt更简单,开始使用时需要更少的理解(特别是如果您熟悉其他来源的getopt:例如shell脚本),optparse更强大,更多详细。但是,如果我只需要获得一个或两个命令lime参数,我甚至可以使用简单的if语句。

总而言之,每个工具都有其目的,每种情况都可能需要一个更适合这种情况的不同工具。

答案 3 :(得分:0)

我使用Richard Gruet的Python Quick Reference,这是Python的一个很好的参考,包括标准库的一些更重要的部分。它可以很好地使用颜色编码和笔记对语言和库进行更改。

例如,请查看his section on getoptlist of modules and packages in base distribution

它尚未针对Python 3进行更新,但我仍抱有希望!