开发者社区> JoanKing> 正文

(十二)Python 基于第三方库的应用举例

简介: (十二)Python 基于第三方库的应用举例
+关注继续查看

Python 语言功能强大的原因之一是有很多的第三方库。无论是可以与 Matlab 媲美的专业数学计算,还是图像处理,无论是大数据统计、计算机学习,还是生物信息学研究,都可能找到开源的第三方类库,而不必“重复发明轮子”。这些第三方库主要可在 https://pypi.python.org/pypi 等站点找到。


  • 一、对Excel的操作


常见的 Python 第三方库有 xlrdxlwtxluntilspyExceleratoropenpyxlxlswriter等等,它们都可以跨平台对 Excel 进行操作,不需要在系统中安装 Office 办公软件。此外,在Windows操作系统中,Python 还可以利用 win32com 调用系统中已安装的 Office 办公软件对 Excel 进行操作。
其中xlrdxlwtxluntilspyExcelerator 可处理.xls 文件,网上的资源比较多。前两者分别司职 读和写 ,后两者 读/写 均可,但功能偏少。
对于2007版以后的.xlsx 文件,则只有 openpyxlxlswriter 可以处理。其中,xlswriter.xlsx文件的操作功能非常专业,单元格格式设置、合并、数据有效性、图标、公式、宏等操作几乎应有尽有,美中不足的是没有读取功能。而 openpyxl 虽然功能不够强大,但 读/写 均可,能满足基本的操作要求。下面以 openpyxl 为例进行介绍。


  • 1.1、用 openpyxl 在内存中创建工作表
    在互联网状态下,安装 openpyxl 库(不会安装库的联系我或者百度)。首先在内存中创建工作表,或将已有工作表装入内存,例如:


from openpyxl import Workbook
wb = Workbook()
wb.save('/Users/wangchong/Desktop/test.xlsx')   # 在桌面建立test.xlsx的表格
  • 1.2、数据的读取
    使用 openpyxl 可以直接访问活动工作表的单元格,如下:


cell_A4 = ws['A4']
  • 这里,cell_A4对象实例的类型是单元格,其值为cell_A4.value。也可以直接执行、列定位访问单元格,读取数据或赋值,例如:


cell_B4 = ws.cell(row=4,column=2,value='上海市')
  • 注意:这里的行、列参数row和column 都是从1开始的,与Python 其他对象的指针下标不一致。


  • 如果要遍历整个工作表的所有单元格,可以使用 openpyxl.worksheet.Worksheet.rows()方法,将其用tuple()函数转换为元组类型,即可得到每行元组为元素的二维元组。同样,使用openpyxl.worksheet.Worksheet.columns()方法,将其用tuple()函数转换为元组类型,即可得到每列元组为元素的二维元组。
    如果需要读取工作表中的部分数据,则可以使用单元格区间、列区间和行区间,例如:cell_range = ws['A1:C2']、col_range = ws['C:D']和row_range=['5:10']。openpyxl 并没有提供获取有效行数和列数的函数,但可以使用 len() 函数获取。有效行数为 len(tuple(ws.rows)),有效列数为 len(tuple(ws.columns))。


  • 二、图片操作PIL (Python Imaging Library) 是著名的图片处理的第三方,包含基本的图像处理、特效合成、滤镜等方法。其替代库 Pillow 修复了 PIL 的一些缺陷,提供了 Python3的支持。在链接互联网的状态下,安装 Pillow库。Pillow库中除核心模块 Image外,还包含 ImageChops(图片计算)ImageEnhance(图片效果)ImageFilter(滤镜)ImageDraw(绘图) 等主要模块。
    • 2.1、Image 模块及应用Image 模块中常用的函数如下。
      • (1) 图片打开函数


.open(file,openmode)
      • 其中,参数file和openmode 分别为文件名和打开方式(默认为'r',只读)。
      • (2) 新建图片函数


new(mode,size,color=0)
      • 其中,mode为图片色彩模式,取值为:'RGB'、'CMYK'、'LAB'等等。size为图片的大小,是由水平像素数与垂直像素数组成的元组;color为颜色,默认颜色为黑色(0)。
      • (3) 复制图片函数


copy()
      • 功能是将图片的对象复制到内存中。
      • (4) 粘贴图片函数


paste(region.size)
      • 功能是将内存中的图片粘贴到对象region 中,其中,region 为粘贴对象,size为图片大小。
      • (5) 显示图片


show()
      • 功能是显示内存中的图片。
      • (6) 重新设置大小


resize(size)
      • 其中,size为图片的大小,是水平像素与垂直像素元组。
      • (7) 图片旋转


rotate(angle)
      • 其中,angle是旋转的角度。
      • (8) 图片变换


transpose(method)
      • 其中,method可选项有:FLIP_LEFT_RIGHT(左右镜像)、FLIP_TOP_BOTTOM(上下镜像)、ROTATE_90(顺时针 90°)、ROTATE_180(顺时针 180°)、ROTATE_270(逆时针 90°)等。
      • (9) 图片裁剪


copy((x1,y1,x2,y2))
      • 其中,各参数为自左上角点至右下角点的坐标元组。
      • (10) 缩略图


thumbnail(size)
      • 其中,size为缩略图大小。
      • (11) 转换函数


convert(mode)
      • 功能是转换色彩模式。其中,mode可取值为:L、RGB、CMYK等等。
      • (12) 混合图片函数


blend(im1,im2,alpha)
      • 其中,im1,im2 分别相当于 Photoshop 中参加混合的上、下两层图片;alpha 为混合透明度,通过 im1*(1-alpha)+im2*alpha 得到混合结果。
      • (13) 遮罩图片函数


composite(im1,im2,mask)
      • 其中,im1 相当于 Photoshop 中的绑定遮罩层的图片;im2相当于下层图片(被遮罩);mask 为遮罩层图片,要求为黑白二值、灰度或RGBA色彩模式。
      • (14) 保存图片


save(file,format)


      • 功能是将内存中的图片写入文件中。
      • 例如:在桌面/Users/wangchong/Desktop/testImage文件夹中画一个蓝底的图片,图片中有一个红色的圆,效果如下所示:


image.png


#! coding=utf-8
from PIL import Image
from PIL import ImageDraw
path="/Users/wangchong/Desktop/testImage/1.jpg" #文件存储的路径
image=Image.new("RGB",(200,200),"blue")#创建一个蓝色的,大小为200*200像素的RGB图片
drawObject=ImageDraw.Draw(image)
drawObject.ellipse((50,50,80,80),fill="red")#在image上画一个红色的圆
image.save(path)#保存图片
"""以下代码用来显示出画的图片"""
img=Image.open(path)
img.show()#标准版本的show()方法不是很有效率,因为它先将图像保存为一个临时文件,然后使用xv进行显示。如果没有安装xv,该函数甚至不能工作。但是该方法非常便于debug和test。(windows中应该调用默认图片查看器打开)


  • 2.2、ImageChops 特效与合成ImageChops 模块包含一些通过计算图片通道中的像素值而进行特效合成的函数,相当于 Photoshop 中的图层特效。常见的特效函数如下。


    • (1)、正片叠底


mutiply(im1,im2)


    • 这类似于在同一光源叠放两张胶片的投影效果,高亮度视为透明。举例如下:


image.png

image.png


image.png


from PIL import Image
from  PIL import  ImageChops
im1 = Image.open('/Users/wangchong/Desktop/testImage/6.jpg')
im2 = Image.open('/Users/wangchong/Desktop/testImage/7.jpg')
m = ImageChops.multiply(im1,im2)
m.show()
m.save('/Users/wangchong/Desktop/testImage/multiply.jpg')
  • (2)、滤色


screen(im1,im2)
  • 这类似于两张胶片分别透过不同光源在同一屏幕上的投影结果,低亮度视为透明。举例如下:


image.pngimage.png

image.png

from PIL import Image
from  PIL import  ImageChops
im1 = Image.open('/Users/wangchong/Desktop/testImage/8.jpg')
im2 = Image.open('/Users/wangchong/Desktop/testImage/9.jpg')
m = ImageChops.screen(im1,im2)
m.show()
m.save('/Users/wangchong/Desktop/testImage/screen.jpg')
  • (3)、反相


invert(im1)


  • 这类似于照片底片的效果,以 255 减去像素的色彩后得到的新的色彩值。举例如下:


image.png

image.png

(4)、相减

subtract(im1,im2)


其求得的两张图片对应的像素之差,用于采集相同背景图片上的差异前景。举例如下:


image.png

image.png

image.png


from PIL import Image
from  PIL import  ImageChops
im1 = Image.open('/Users/wangchong/Desktop/testImage/8.jpg')
im2 = Image.open('/Users/wangchong/Desktop/testImage/9.jpg')
m = ImageChops.subtract(im1,im2)
m.show()
m.save('/Users/wangchong/Desktop/testImage/subtract.jpg')


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23580 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22354 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19807 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
11998 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22538 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
14750 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36448 0
+关注
433
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载