14个非常好的Python库,不容忽视

解析、图像处理、web爬行、GUI创建——这些鲜为人知的Python库您已经了解了

隐藏的珍宝:14个非常好的Python库
infoworld.

隐藏的珍宝:14个非常好的Python库

想知道Python作为一门语言获得如此巨大成功的原因吗?只要看看它大量的本地和第三方库就知道了。然而,有这么多的图书馆在那里,这并不奇怪,有些被挤了出来,并没有得到他们应得的注意。另外,只在一个领域工作的程序员并不总是知道通过为其他类型的工作创建的库可能提供给他们的好处。

这里有10个你可能忽略的10个Python库,但绝对值得你关注。是时候给出其中一个隐藏的宝石有些爱。

(下载Python MegaGuide.,深入了解13个Python web框架和6个Python开发工具包。|与InfoWorld's一起关注编程中的热门话题App Dev报告时事通讯.]

枕头
infoworld.

枕头

它是什么:图像处理无痛苦。

为什么它很棒:已经执行了图像处理的大多数Pythonistas应该熟悉PIL(Python映像库),但PIL以缺点和限制串行,并且不经常更新。枕头,然而,目标是比太平更容易使用代码兼容PIL通过最小的更改。包含扩展用于与本机Windows成像功能和Python的TCL / TK备份TKinter GUI包交谈。

2017年初发布的Pillow的第4版增加了一系列变化,主要是内部的,但也更新了Pillow以使用FreeType和OpenJpeg等依赖库的最新版本。Pillow可以通过GitHub或PyPI存储库获得。

粘滞
infoworld.

粘滞

它是什么:将基于控制台的Python程序转换为体育平台本机GUI的Python程序。

为什么它很棒:将命令行应用程序呈现给人们,特别是普通用户,是减少其使用的最快方法之一。除了硬核玩家,很少有人会去思考通过哪种选择或以何种顺序。粘滞对象所期望的参数argparse库,并将它们以GUI表单的形式呈现给用户,所有选项都被标记,并以适当的控件显示(例如多选项参数的下拉框,等等)。只需很少的额外编码——一个包含和一个装饰器——就可以使它工作,假设您已经在使用argparse。

Peewee.
infoworld.

Peewee.

它是什么:一个支持SQLite, MySQL和PostgreSQL的小ORM,有很多扩展。

为什么它很棒:orm并不是最有名的;有些人宁愿将模式建模留在数据库端,这样就可以完成它。但是,一个构造良好、不引人注意的ORM对于那些不想接触数据库的开发人员和那些不想要像数据库那样成熟的开发人员来说是天降之物SQL Alchemy.Peewee.非常适合。Peewee模型易于构造、连接和操作,许多常见的查询操作函数(如分页)都内置在其中。更多特性可用附加组件,包括对其他数据库、测试工具的扩展,以及模式迁移系统——这是一个即使是讨厌ORM的人也会喜欢的特性。

Scrapy
infoworld.

Scrapy

它是什么:屏幕抓取和网页抓取。

为什么它很棒:Scrapy保持整个刮刮的过程。创建一个定义要刮擦的项目类型的类,并编写关于如何从页面中提取该数据的一些规则;结果将导出为JSON,XML,CSV或任何数量的其他格式。收集的数据可以保存RAW,或者可以在导入时进行消毒。此外,可以扩展SCAPE,以允许许多其他行为,例如如何处理登录网站或处理会话cookie。图像也可以通过SCRAPY自动虹吸并与刮擦的内容相关联。

Apache Libcloud
infoworld.

Apache Libcloud

它是什么:通过单个,一致和统一的API访问多个云提供商。

为什么它很棒:如果以上描述Apache Libcloud不会让你高兴得拍手,没有什么会。云提供商都喜欢按自己的方式做事——有时巧妙,有时不——所以要有一个统一的处理机制数十家供应商而用于操作它们的资源的相关方法是一个福音。计算、存储、负载均衡和DNS都支持api。x和3。x风格的Python。对于那些为了提高性能而使用Python的PyPy版本的用户,也支持PyPy。

Pygame
infoworld.

Pygame

它是什么:一个用Python创建视频游戏的框架。

为什么它很棒:如果您认为游戏开发世界之外的任何人都会扰乱这样的框架,再次思考。Pygame提供了一个方便的选项来处理许多面向gui的行为,否则可能需要很多繁重的工作:绘制画布和精灵图形;多声道声音处理;处理窗口和点击事件;碰撞检测;等等。不是每个应用程序,甚至不是每个GUI应用程序都能从使用Pygame构建中受益,但是仔细看看它提供了什么,您可能会感到惊讶。

Numpy
infoworld.

NumPy

它是什么:科学计算和数学工作,包括统计,线性代数,矩阵数学,金融业务,以及更多。

为什么它很棒:Quants和Bean计数器已经知道了NumPy并喜欢它,但Numpy Outlay Math'n'D统计数据的应用范围比您想象的更广泛。例如,它是为Python提供对多维数组的最简单,最灵活的方法之一,其他语言的新人通常抱怨。如果你想要总共和完整的Python Science-and Math Enchilada,那么得到SciPy库和环境,其中包括NumPy作为标准版本。更多基于NumPy的复杂数据分析,请查看熊猫

上海
infoworld.

上海

它是什么:将任何外部程序调用在子处理中,并将结果返回到Python程序 - 但具有相同的语法,好像有问题的程序是本机Python函数。

为什么它很棒:在任何posix兼容的系统上,上海是天赐之物。这意味着这些平台上可用的所有命令行程序都可以用python方式使用。您不仅不必再白费力气(为什么要在操作系统中实现ping呢?),而且不必再为如何将该功能优雅地添加到您的应用程序而烦恼。警告:有没有对传递到此库的参数进行无害化处理。确保永远不要传递原始的用户输入。

Python-docx
infoworld.

Python-docx

它是什么:以编程方式创建和操作Microsoft Word .docx文件。

为什么它很棒:理论上,编写创建和操作xml风格的Microsoft Word文档的脚本应该很容易。实际上,并没有那么简单,这要感谢.docx格式的所有内部复杂性。Python-docx让您通过提供高级,编程方式来创建.docx文件来完成所有这些内容。

文本、图像、样式和文档部分都可以通过库的api添加和更改。该库还允许更改现有文档。这是一种很好的方法,可以执行需要另一个Python库来实现的更改,或者避免处理Word自带的自动化函数。一些特性仍然不被支持。例如,您不能添加或更改头文件和脚注——但Python-docx尽力保留这些东西,即使它们不能被操纵。

pyfilesystem.
infoworld.

pyfilesystem.

它是什么:任何文件系统的通用python接口——任何文件系统。

为什么它很棒:这背后的基本思想pyfilesystem.不能简单:“以与文件对象摘要单个文件相同的方式,”库的文档说:“FS对象摘要整个文件系统。”这并不意味着仅在磁盘文件系统上;它还意味着FTP目录,内存文件系统,用于由OS定义的位置的文件系统(例如用户目录),甚至彼此覆盖的上述覆盖的组合。

除了使其更容易编写修理文件的跨平台代码,Pyfilesystem将避免将事件从标准库的不同部分汇集在一起​​,主要是操作系统IO..它还提供实用程序,否则可能必须从头开始滚动,例如用于打印文件系统的控制台友好树视图的工具。

EbookLib
infoworld.

EbookLib

它是什么:轻松创建电子书。

为什么它很棒:创建电子书通常需要争吵以及各种命令行工具或其他。EbookLib提供管理工具和api来简化流程。它适用于epub版本2和3文件,Kindle支持正在开发中。

提供图像和文本(后者以HTML格式),您可以使用章节,嵌套的目录条目,图像,HTML标记等章节将这些部分组装成电子书。封面,脊椎和样式表数据也得到支持。插件系统允许第三方扩展库的行为。

如果你不需要像EbookLib这样浓郁的东西,有MKEPUB.,它在图书馆中提供了仅几千字节的库中的基本电子书装配功能,但包括能够将图像添加到文档的功能。MKEPUB的一个轻微缺点是它需要Jinja2,这反过来需要MarkupSafe图书馆。

Cython
infoworld.

Cython

它是什么:通过将Python代码编译为C来加速Python代码。

为什么它很棒:Python非常方便,但方便起见了性能成本。C是运行时性能的金标准(禁止组件),但可以笨重使用。Cython融入两个世界中最好的 - 不仅通过为Python提供一个方便的选择来访问C中的库,而且允许Python代码转换为高性能C代码。它在科学计算中广泛使用,但它可用于多种应用的明智加速。

这个转变过程最棒的部分是,你不必一次完成所有的事情。您可以按原样开始Python代码,然后用Cython编译它,以获得适度的性能提升。为了进一步加速,您可以使用类型注释装饰变量和函数,这个过程不比使用Python的PEP 484类型提示系统(尽管Cython的语法不同)复杂。

看哪
infoworld.

看哪

它是什么:Python中对打印式调试的强大支持。

为什么它很棒:在大多数语言中,有一种简单的调试方法:插入内联的“print”语句。Python也不例外,即使是在大型项目中,也有很多人在进行专门的调试。尽管打印调试很简单,但是在大型的、杂乱无章的、多模块的项目中很难得到有用的结果。

看哪提供通过打印语句进行上下文调试的工具包。它允许您对输出施加统一的外观,对结果进行标记,以便通过搜索或过滤器对其进行排序,并提供跨模块的上下文,以便在一个模块中产生的函数可以在另一个模块中正确调试。它处理许多常见的特定于python的场景,如打印对象的内部字典、揭示嵌套属性、存储和重用结果以便在调试过程的其他点进行比较,等等。

版权所有©2017.Raybet2

相关幻灯片