分享

UC头条:22 个常用的 Python 工具包

 gaolidabangzi 2022-02-24

15.Jmespath

4.73亿次下载

Python中使用JSON很容易,因为JSON可以完美地映射到Python的字典上。我认为这是最好的特性之一。

说实话我从来没听说过jmepath这个包,尽管我使用过很多JSON。我会使用json.loads然后手动从字典中读取数据,或许还得写几个循环。

JMESPath,读作“Jamespath”,能更容易地在Python中使用JSON。你可以用声明的方式定义怎样从JSON文档中读取数据。下面是一些最基本的例子:

importjmespath#Getaspecificelementd={'foo':{'bar':'baz'}}print(jmespath.search(foo.bar,d))#baz#Usingawildcardtogetallnamesd={'foo':{'bar':[{'name':'one'},{'name':'two'}]}}print(jmespath.search(foo.bar[*].name,d))#[“one”,“two”]

这仅仅是它的冰山一角。更多用法参见它的文档和PyPI主页。

16.Setuptools

4.01亿次下载

Setuptools是用来创建Python包的工具。

这个项目的文档很糟糕。文档并没有描述它的功能,还包含死链接。真正的好文档在这里:https://packaging./,以及这篇文章中关于怎样创建Python包的教程:https://packaging./tutorials/packaging-projects/。

17.awscli

第3、7、17和22名互相关联,所以请参见第3名的介绍。

18.pytz

3.94亿次下载

类似于第5名的dateutils,该库可以帮助你操作日期和时间。处理时区很麻烦。幸运的是,这个包可以让时区处理变得很容易。

关于时间,我的经验是:在内部永远使用UTC,只有在需要产生供人阅读的输出时才转换成本地时间。

下面是pytz的例子:

fromdatetimeimportdatetimefrompytzimporttimezoneamsterdam=timezone(Europe/Amsterdam)ams_time=amsterdam.localize(datetime(2002,10,27,6,0,0))print(ams_time)#2002-10-2706:00:00+01:00#ItwillalsoknowwhenitsSummerTime#inAmsterdam(similartoDaylightSavingsTime):ams_time=amsterdam.localize(datetime(2002,6,27,6,0,0))print(ams_time)#2002-06-2706:00:00+02:00

更多文档和例子可以参见PyPI页面。

19.Futures

3.89亿次下载

从Python3.2开始,python开始提供concurrent.futures模块,可以帮你执行异步操作。futures包是该库的反向移植,所以它是用于Python2的。当前的Python3版本不需要该包,因为Python3本身就提供了该功能。

前面我说过,从2020年1月1日起官方已经停止支持Python2。我希望明年再做这个列表的时候,不再看到这个包排进前22名。

下面是futures包的基本用法:

fromconcurrent.futuresimportThreadPoolExecutorfromtimeimportsleepdefreturn_after_5_secs(message):sleep(5)returnmessagepool=ThreadPoolExecutor(3)future=pool.submit(return_after_5_secs,('Helloworld'))print(future.done)#Falsesleep(5)print(future.done)#Trueprint(future.result)#HelloWorld

可见,我们可以创建一个线程池,然后提交一个函数,让某个线程执行。同时,你的程序会继续在主线程上运行。这是实现并行执行的一种很容易的方式。

20.Colorama

3.70亿次下载

你可以使用Colorama在终端上添加颜色:

点击加载图片

下面的示例演示了实现这个功能有多么容易:

fromcoloramaimportFore,Back,Styleprint(Fore.RED+someredtext)print(Back.GREEN+andwithagreenbackground)print(Style.DIM+andindimtext)print(Style.RESET_ALL)print(backtonormalnow)

21.Simplejson

3.41亿次下载

Python自带的json模块有什么问题导致了这个包有如此高的排名?没有任何问题!实际上,Python的json就是simplejson。但simplejson有一些优点:

能在更多Python版本上运行

更新频率高于Python

一部分代码是用C编写的,运行得非常快

有时候你会看到脚本中这样写:

try:importsimplejsonasjsonexceptImportError:importjson

不过,除非确实需要一些标准库中没有的功能,我依然会使用json。SImplejson可能比json快很多,因为它的一部分是用C实现的。但是除非你要处理几千个JSON文件,否则这点速度提升并不明显。此外还可以看看UltraJSON,这是个几乎完全用C编写的包,应该速度更快。

22.boto3

第3、7、17和22名互相关联,所以请参见第3名的介绍。

结束语

只写22个包很难,因为后面的许多包都是终端用户更倾向使用的包。

写这篇文章给了我一些启示:

许多排名靠前的包提供一些核心的功能,如处理时间、配置文件、加密和标准化等。它们通常是其他项目的依赖。

最常见的使用场景就是连接。许多包提供的功能就是连接到服务器,或者支持其他包连接服务器。

其他包是对Python的扩展,比如用于创建Python包的工具,创建文档的工具,创建版本兼容性的工具,等等。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多