22 个常用的 Python 工具包(四)

简介: 首先我列出了最近一年内 PyPI 上下载量最高的 Python 包。我们来看看这些包的作用,它们的之间的关系,以及为什么会如此流行。

15. Jmespath

4.73亿次下载

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

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

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

import jmespath
# Get a specific element
d = {"foo": {"bar": "baz"}}
print(jmespath.search( foo.bar , d))
# baz
# Using a wildcard to get all names
d = {"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.org/,以及这篇文章中关于怎样创建 Python 包的教程:https://packaging.python.org/tutorials/packaging-projects/


17. awscli

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


18. pytz

3.94亿次下载

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

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

下面是 pytz 的例子:

from datetime import datetime
from pytz import timezone
amsterdam = timezone( Europe/Amsterdam )
ams_time = amsterdam.localize(datetime(2002, 10, 27, 6, 0, 0))
print(ams_time)
# 2002-10-27 06:00:00+01:00
# It will also know when it s Summer Time
# in Amsterdam (similar to Daylight Savings Time):
ams_time = amsterdam.localize(datetime(2002, 6, 27, 6, 0, 0))
print(ams_time)
# 2002-06-27 06:00:00+02:00


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


19. Futures

3.89亿次下载

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

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

下面是 futures 包的基本用法:

from concurrent.futures import ThreadPoolExecutor
from time import sleep
def return_after_5_secs(message):
  sleep(5)
  return message
pool = ThreadPoolExecutor(3)
future = pool.submit(return_after_5_secs, 
                     ("Hello world"))
print(future.done())
# False
sleep(5)
print(future.done())
# True
print(future.result())
# Hello World


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


20. Colorama

3.70亿次下载

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

25.jpg

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

from colorama import Fore, Back, Style
print(Fore.RED +  some red text )
print(Back.GREEN +  and with a green background )
print(Style.DIM +  and in dim text )
print(Style.RESET_ALL)
print( back to normal now )



21. Simplejson

3.41亿次下载

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

  • 能在更多 Python 版本上运行
  • 更新频率高于 Python
  • 一部分代码是用C编写的,运行得非常快

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

try:
  import simplejson as json
except ImportError:
  import json


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


22. boto3

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


结束语

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

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

  • 许多排名靠前的包提供一些核心的功能,如处理时间、配置文件、加密和标准化等。它们通常是其他项目的依赖。
  • 最常见的使用场景就是连接。许多包提供的功能就是连接到服务器,或者支持其他包连接服务器。
  • 其他包是对 Python 的扩展,比如用于创建 Python 包的工具,创建文档的工具,创建版本兼容性的工具,等等。
相关文章
|
23天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
25 2
|
23天前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
46 2
|
1月前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
|
1月前
|
存储 Python
python数据类型、debug工具(一)
python数据类型、debug工具(一)
|
20天前
|
C语言 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第24天】在Python编程的世界中,追求代码的简洁性和可读性是永恒的主题。列表推导式(List Comprehensions)作为Python语言的一个特色功能,提供了一种优雅且高效的方法来创建和处理列表。本文将深入探讨列表推导式的使用场景、语法结构以及如何通过它简化日常编程任务。
|
1月前
|
网络协议 IDE iOS开发
Python编程---简单的聊天工具
Python编程---简单的聊天工具
|
1月前
|
数据处理 开发者 Python
Python编程中的列表推导式:简洁而强大的工具
【9月更文挑战第35天】在Python的众多特性中,列表推导式以其简明扼要和强大功能脱颖而出。本文不仅将介绍列表推导式的基础知识,还将探讨其背后的逻辑,并辅以实际代码示例。无论你是初学者还是有经验的开发者,都能从中获取新的见解和应用技巧。
28 5
|
2月前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
|
2月前
|
机器学习/深度学习 搜索推荐 数据可视化
Python量化炒股常用的Matplotlib包
Python量化炒股常用的Matplotlib包