上篇写了 Python 开发中经常使用的标准库,这篇接着写 Python 开发中经常使用的三方库。html
大多数三方库都支持用 pip 包管理工具下载安装,这极大方便了咱们平常开发须要。python
掌握 Python 的标准库是基础,由于大多数三方库都是在参考基础和实际开发中衍生出来的副产品。因此想要开发一款本身的三方库,我以为有必要先将标准库掌握好,这样在真正开发三方库时能让你在写码的过程当中游刃有余。mysql
通常 Python 支持的三方库都能在 Github 上找到,每一个库都有 README 文件详细解释库的版本、安装方式和用法等等。若是有不理解的,应该要学会本身看文档找答案,实在不行读源码。jquery
通常在开发中会用到不少三方库,下面列举一些,以此来加深印象。git
支持 Excel 文件库。这五个库都支持读写 excel 文件,不一样的是支持版本不一样,有的也不更新了。从网站能够看出,openpyxl 库已经支持多个后缀的 excel 文件,是最新也是最理想可用的库。github
支持 PDF 文件。PyPDF2 库是一个纯 Python 写的 PDF 库,可以拆分、合并、裁剪和旋转 PDF 文件页面。支持对 PDF 文件添加客户数据、查看选项和加密,还能获取 PDF 文本和元数据以及整合整个文件。web
HTML 转 PDF。此库使用 ReportLab 工具将 HTML 文件转化为 PDF 文件,目前支持 HTML5 和 CSS2.1(包括一部分 CSS3)。由于是用纯 Python 写的,因此与平台无关(跨平台)。redis
YAML 解析器和发射器。算法
结巴中文分词。jieba 库支持三种分词模式:精确模式、全模式和搜索引擎模式。sql
此外,还支持繁体分词和自定义字典等。jieba 有多种语言实现:Java、C++、Rust、Node.js、Erlang、R、IOS、PHP、.NET(C#)、Go、Android,基本涵盖了全部编程语言。
Python 图像库。pillow 库继承自 PIL(Python Imaging Library),由于 PIL 库仅支持到 Python2.7 版本,库的始做俑者已经再也不维护更新,因此出现了一批志愿者将 PIL 库从新打形成兼容最新 Python 版本的 pillow 库。由于功能足够强大,API 调用也足够简单,因此逐渐成为了事实上官方推荐的 Python 图像库。
简单优雅的 HTTP 库。requests 能够说是知名度最高(依据:下载次数)的 HTTP 三方库,与 Python 内置的 http 基础库相比有更强大的功能和易用性,好比能够轻松发送 HTTP/1.1(阮老师讲得好) 请求,不须要手动嵌套字符串地址,也不须要手动编码 PUT
和 POST
数据(如今能够用 JSON 数据解决),以及各类网络请求功能。
requests 是很是优秀的库,建议全部人去读读源码。
HTTP 库。urllib3 库是从 Python 标准库 urllib 继承出来更强大的版本,支持线程安全、链接池、客户端 SSL/TLS 验证、文件编码分步上传、压缩编码、HTTP 和 SOCKS 代理等等。与 requests 同样提供不少简洁易用的函数操做,但在性能和扩展上还远不及 requests 有效率。
HTTP 库。此库提供 HTTP 请求实用工具,同上。
HTTP 异步框架。aiohttp 库的主要特征是支持客户端与服务端进行 HTTP 协议通讯、支持客户端与服务端进行 WebSocket 链接、以及为 Web 服务器提供了中间件和可切换的路由。
HTML/XML 解析库。BeautifulSoup4 库经常使用于对 HTML 文件或 XML 文件解析提取有效数据,采集网络数据时常常须要用到它。它会将文件(页面)解析成树结构,以便可以快速查找到对应的标签或数据。
HTML/XML 解析库。lxml 与 BeautifulSoup4 同样都支持 HTML/XML 文件解析,lxml 在文档中提到本身是功能最丰富且简洁易用,解析速度快且对内存友好(意思是存储效率高)。目前来讲,不管使用哪一种解析器都比 python 内置的解析器效率高。
BeautifulSoup4 库支持使用 lxml 解析器。
jquery 插件代码解析库。
MySQL 数据库链接器。PyMySQL 是纯 python 写的客户端链接库,大多数 API 兼容 mysqlclient 和 MySQLdb。
PostgreSQL 数据库链接器。psycopg2 是在第一代 psycopg 的基础上进一步开发,第一代遵循了 python DB API 2.0 规范,为多线程应用程序提供了保障。好比实现了基础的客户端链接、线程安全(多线程可共享同一个链接)、支持大量建立和销毁游标、支持大量执行 INSERT 和 UPDATE 在内的并发操做。
更进一步,psycopg2 主要是用 C 语言封装了 libpq 库,可以使性能和安全有效提高。支持客户端和服务端进行数据交互、异步通讯、通知以及 COPY TO/COPY FROM
。还支持 python 的许多数据类型,以便对 PostgreSQL 进行匹配,由于足够灵活,也支持扩展和自适应。
Redis 数据库链接器。这是目前最有名的 redis 数据库链接器,支持最新的 python 和 redis 版本。
mongoDB 数据库链接器。一样,PyMongo 库是最有名的 mongoDB 数据库链接器,支持 BSON 格式存储数据,支持最新的 python 和 mongoDB 版本。
ORM(Object Relational Mapper)框架。Peewee 库支持对数据库 ORM 操做,是一个简单小巧且易用的框架,提供大量的扩展,目前支持 sqlite、mysql 和 postgresql 数据库。
ORM(Object Relational Mapper)框架。相比于 Peewee,SQLAlchemy 的应用范围更广,它提供了企业级持久化模式,在高效访问数据库的同时,也为应用程序开发人员提供 SQL 的全部功能和灵活性。
支付宝签名认证。支付宝生成预付订单须要使用 RSA 加密算法 对数据进行加密,这个库简化了加密过程。
JWT(JSON Web Token) 令牌实现。此库用于实现支持 JSON 格式传输的 Token 字符串。
数据加密库。itsdangerous 库主要用于数据加密,当咱们须要将数据传输到不安全的环境中保留时,能够对返回或响应的数据作校验,以防止数据被篡改。该库还支持自定义数据序列化规则、数据压缩和设置令牌有效时间等。
分布式任务队列。celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,而且提供维护这样一个系统的必需工具。也是一个专一于实时处理的任务队列,同时也支持任务调度。
celery 库的功能强大,建议去阅读官方文档。
监控和管理(celery)工具。flower 库是基于 Web 开发的 celery 实时监控和管理工具,目前拥有多种特性,好比支持 celery 事件实时监控、远程控制、Broker monitoring(中间人监控)、HTTP API 、基础认证和谷歌的 OpenID 开放受权。
更多详细资料可查看官方文档。
编写 elasticsearch 的高级库。Elasticsearch 是一个基于 lucene 库的搜索引擎,提供了一个分布式、支持多租户的全文搜索引擎,具备 HTTP Web 接口和无模式 JSON 文档。目前,elasticsearch 是最受欢迎的企业搜索引擎。
elasticsearch-dsl-py 库可以用 python 语言编写和运行 elasticsearch,它是在官方 elasticsearch-py 库上作二次开发,提供更多简单高效的功能。
加密工具包。PyCrypto 库提供各类安全哈希函数(例如 SHA256 和 RIPEMD160)和数据加密算法(例如 AES、DES、RSA、ElGamal)。
SSH(Secure Shell) 模块。Paramiko 支持 SSH2 安全协议(加密和认证)链接远程机器,与 SSL/TLS 不一样,SSH2 不须要中央机构派发的阶级式签名证书。SSH2 协议已经替代了 Telnet 和 rsh 协议来实现远程 Shell 访问。SSH2 协议还经过加密隧道打开访问远程服务的多个通道(例如 SFTP 的工做方式)。
日志记录库。logbook 库能够做为标准库 logging 的替代品,可以实现更好的安装、使用、配置和对 web 应用的支持。
单元测试库。nose2 是继承自 nose,在此基础上作二次开发。尽管如此,nose2 也并不支持 nose 的全部功能,具体可看这里。nose 库的目的是扩展标准库 unittest,以便能有更好的易用性和理解性。
单元测试框架。pytest 框架让编写小型测试变得简单,支持扩展对应用程序或库进行复杂功能测试。
测试代码覆盖率。此库使用了 Python 标准库中提供的代码分析工具和追踪钩子来肯定哪些代码行是可执行的,哪些是已执行的。
浏览器自动化框架和生态系统。selenium 库在制做爬虫工具中常常被用到,主要是封装了一些工具和库来实现浏览器自动化。selenium 专门为 W3C WebDriver 规范 提供了基础结构,实现了对全部 web 浏览器平台兼容且与语言无关的编码接口。
selenium 是很是优秀的库,建议阅读官方文档.
性能分析工具。lineprofiler 库可以逐行分析程序性能,主要是对运行时间的详细描述。
内存分析工具。同上,memoryprofiler 库可以监视进程的内存消耗,并可逐行分析程序的内存消耗。
2D 绘图库。matplotlib 库以各类硬拷贝格式和跨平台的交互式环境生成可出版质量的图形。matplotlib 支持在 python、python 脚本、ipython shell 环境(例如 matlab、mathematica)、web 应用服务器和各类图像用户界面工具包。
须要注意的是,此库再也不支持 python2。
svg 绘图库。pygal 库用于生成动态 svg 图表。
OpenCV(Open Source Computer Vision Library)跨平台的计算机视觉库。OpenCV 是由英特尔公司发起并参与开发,可以用于开发实时的图像处理、计算机视觉以及模式识别程序等。
提倡开源的世界让全部人都参与进来,可以列举的 python 三方库更是数不胜数。固然,咱们选择三方库是在适配需求的场景下利用,这样遇到问题时也值得花时间让开源库获得更好发展。
注: