1.Python 修改excel文件

import xlrd
import xlutils.copy
excelr = xlrd.open_workbook("hello.xlsx")
excelw = xlutils.copy.copy(excelr)
sheet1 = excelw.get_sheet(0)
sheet1.write(3, 5, "xlutils.copy test test")
excelw.save("hello.xlsx")     # 这里如果名称不变,则覆盖原文件,如果名称改变,则生成新名称的文件。

#所以,由上代码可以分析出,如果文件原本就存在,而你要修改它,不能直接使用xlwt,必须使用 xlutils.copy 方法复制一份出来再修改,最后保存或覆盖原文件。

#原表格内容

#改后表格内容

2. python 创建新的excel文件,指定标签页,并写入内容到应标签页内

import xlwt
excel = xlwt.Workbook("hello.xlsx")
sheet1 = excel.add_sheet("sheet5")
sheet2 = excel.add_sheet("sheet2")
sheet3 = excel.add_sheet("sheet3")
sheet1.write(0,0,"hello world")
sheet2.write(1,0,"hello")
sheet3.write(2,0,"test test")
excel.save("hello1.xlsx")

执行结果:

打开hello1.xlsx

3.处理pdf文件

(1) 读取pdf文件

python3 安装 pdfminer3k

# pip install pdfminer3k
from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfparser import PDFPage
from pdfminer.pdfinterp import PDFResourceManager,PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator#获取文档对象,你把algorithm.pdf换成你自己的文件名即可。
fp=open("C:\\Users\\Shinelon\\PycharmProjects\\Python3\\datachuli\\aminglinux\\chapter1.pdf","rb")
#创建一个与文档相关联的解释器
parser=PDFParser(fp)
doc=PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
#PDF文档对象,提供密码初始化,没有就不用带password参数。
doc.initialize()
#检查文件是否允许文本提取
if not doc.is_extractable:raise PDFTextExtractionNotAllowed
#链接解释器和文档对象
#parser.set_document(doc)
#doc.set_paeser(parser)
#初始化文档
#doc.initialize("")
#创建PDF资源管理器对象来存储共享资源
resource=PDFResourceManager()
#参数分析器
laparam=LAParams()
#创建一个聚合器
device=PDFPageAggregator(resource, laparams=laparam)
#创建PDF页面解释器
interpreter=PDFPageInterpreter(resource,device)
#使用文档对象得到页面集合
for page in doc.get_pages():#使用页面解释器来读取interpreter.process_page(page)#使用聚合器来获取内容layout=device.get_result()for out in layout:if hasattr(out, "get_text"):print(out.get_text())

(2)合并多个pdf文件为一个pdf文件

安装pypdf2

# pip install pypdf2
import PyPDF2
import os# 建立一个装pdf文件的数组
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
"""这种方法获取的文件名列表是按照ascii码排序的,例如:chapter1.pdf,chapter10.pdf,chapter11.pdf...以此类推"""
# for fileName in os.listdir(r'C:\Users\Shinelon\PycharmProjects\Python3\datachuli\aminglinux'):  # 遍历该程序所在文件夹内的文件
#     if fileName.endswith('.pdf'):  # 找到以.pdf结尾的文件
#         pdfFiles.append(fileName)  # 将pdf文件装进pdfFiles数组内
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"""这种方式可以采用,但是应该还有更好的方法,再想想"""
pdfFiles = []
for i in range(1, 27):pdfFiles.append("chapter{0}.pdf".format(i))os.chdir(r"C:\Users\Shinelon\PycharmProjects\Python3\datachuli\aminglinux")
pdfWriter = PyPDF2.PdfFileWriter()  # 生成一个空白的pdf文件for pdf in pdfFiles:pdfReader = PyPDF2.PdfFileReader(open(pdf, 'rb'))  # 以只读方式依次打开pdf文件for pageNum in range(pdfReader.numPages):print(pdfReader.getPage(pageNum))pdfWriter.addPage(pdfReader.getPage(pageNum))  # 将打开的pdf文件内容一页一页的复制到新建的空白pdf里pdfOutput = open('combine.pdf', 'wb')  # 生成combine.pdf文件
pdfWriter.write(pdfOutput)  # 将复制的内容全部写入combine.pdf
pdfOutput.close()

3.Python 处理图片

图像处理是一门应用非常广泛的技术,而拥有非常丰富第三方扩展库的python当然不会错过。

PIL(Python Imaging Library)是python种最常用的图像处理库,如果你是python2.x,可以通过一下地址进行下载:http://www.pythonware.com/products/pil/index.htm,找到对应的版本进行下载。

【注意】PIL模块在python3.x中已经替换为pillow模块,文档地址:

http://pillow.readthedocs.io/en/latest/

直接使用

pip install pillow

也可以安装模块

导入时使用 from PIL import Image

简单例子:

from PIL import Image
image = Image.open("img.jpg")
print (image.format, image.size, image.mode)
image.show()

结果:

JPEG (580, 326) RGB

并把图片打开,展示出来

由上例子可以知道:

Image的三个属性:

format :  识别图像的源格式,如果该文件不是从文件中读取的,则被置为 None 值。

size :       返回的一个元组,有两个元素,其值为象素意义上的宽和高。

mode :   RGB(true color image),此外还有,L(luminance),CMTK(pre-press image)。

Image的方法介绍:

show():显示最近加载的图像

open(infilename):  打开文件

save(outfilename):保存文件

crop((left, upper, right, lower)):从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。【即抠图】

Image的几何处理:

out = im.resize((128, 128))                     #调整图片大小

out = im.rotate(45)                             #逆时针旋转 45 度角。

out = im.transpose(Image.FLIP_LEFT_RIGHT)               #左右对换。

out = im.transpose(Image.FLIP_TOP_BOTTOM)       #上下对换。

out = im.transpose(Image.ROTATE_90)             #旋转 90 度角。

out = im.transpose(Image.ROTATE_180)            #旋转 180 度角。

out = im.transpose(Image.ROTATE_270)            #旋转 270 度角。

例一:抠图

图片:

脚本:

from PIL import Image
image = Image.open("img.jpg")
print(image.format, image.size, image.mode)
box = (170, 0, 390, 260)
region = image.crop(box)
region.save("cutting.jpg")

抠取过程:

解释:上述代码将图片的((170, 0), (170, 260), (390, 0), (390, 260))所画出来的区域进行裁剪,并保存在cutting.jpg中

结果L:

史上最强驱逐舰,大家一起来感受一下~_(:3 」∠)_

例子2:图片拼合

将图片抠出来,旋转180度后,在贴回图片上

from PIL import Image
image = Image.open("img.jpg")
print(image.format, image.size, image.mode)
box = (170, 0, 390, 260)
egion = image.crop(box)
egion.save("cutting.jpg")
region = egion.transpose(Image.ROTATE_180)
image.paste(region, box)
image.show()

效果:

例子3:缩放

from PIL import Image
infile = "img.jpg"
outfile = "img2.jpg"
image = Image.open(infile)
(x, y) = image.size
newx = 300      #缩小尺寸
newy = int(y*newx/x)
out = image.resize((newx, newy), Image.ANTIALIAS)
out.show()
out.save(outfile)

对比一下:

缩放图:

例子4:验证码(已封装)

代码如下:

import random
import string
from PIL import Image, ImageDraw, ImageFont, ImageFilterclass VerCode(object):def __init__(self):# 字体的位置,不同版本的系统会有不同self.font_path = 'consolai.ttf'# 生成几位数的验证码self.number = 4# 生成验证码图片的高度和宽度self.size = (100, 30)# 背景颜色,默认为白色self.bgcolor = (255, 255, 255)# 字体颜色,默认为蓝色self.fontcolor = (0, 0, 255)# 干扰线颜色。默认为红色self.linecolor = (255, 0, 0)# 是否要加入干扰线self.draw_line = True# 加入干扰线条数的上下限self.line_number = 20# 用来随机生成一个字符串def gene_text(self):self.source = list(string.ascii_letters)for self.index in range(0, 10):self.source.append(str(self.index))return ''.join(random.sample(self.source, self.number))  # number是生成验证码的位数# 用来绘制干扰线def gene_line(self, draw, width, height):self.begin = (random.randint(0, width), random.randint(0, height))self.end = (random.randint(0, width), random.randint(0, height))draw.line([self.begin, self.end], fill=self.linecolor)# 生成验证码def gene_code(self):self.width, self.height = self.size  # 宽和高self.image = Image.new('RGBA', (self.width, self.height), self.bgcolor)  # 创建图片self.font = ImageFont.truetype(self.font_path, 25)  # 验证码的字体self.draw = ImageDraw.Draw(self.image)  # 创建画笔self.text = self.gene_text()                 # 生成字符串self.font_width, self.font_height = self.font.getsize(self.text)self.draw.text(((self.width - self.font_width) / self.number, (self.height - self.font_height) / self.number), self.text, font=self.font, fill=self.fontcolor)  # 填充字符串if self.draw_line:for i in range(self.line_number):self.gene_line(self.draw, self.width, self.height)def effect(self):#self.image = self.image.transform((self.width + 20, self.height + 10), Image.AFFINE, (1, -0.3, 0, -0.1, 1, 0), Image.BILINEAR)  # 创建扭曲self.image = self.image.filter(ImageFilter.EDGE_ENHANCE_MORE)  # 滤镜,边界加强self.image.save('idencode.png')  # 保存验证码图片#self.image.show()if __name__ == "__main__":vco = VerCode()vco.gene_code()vco.effect()

效果:

转载于:https://blog.51cto.com/286577399/2062340

51. Python 数据处理(2)相关推荐

  1. Python数据处理DataFrame小记

    python数据处理小记 简介: 1.DataFram定义: 2.DataFrame的append 3.DataFrame去除列或行 4.DataFrame查看数据基本统计情况 5.DataFrame ...

  2. 【Python数据处理篇——DataFrame数据准备】DataFrame的创建、增删改查、数据导入等

    欢迎访问我搞事情的[知乎账号]:Coffee 以及我的[B站漫威剪辑账号]:VideosMan 若我的笔记对你有帮助,请用小小的手指,点一个大大的赞哦. 关于DataFrame的相关知识,我还进行了汇 ...

  3. Python 数据处理工具 Pandas(上)

    序列与数据框的构造 外部数据的读取(文本文件读取.电子表格读取.数据库数据读取) 数据类型转换及描述统计 字符与日期数据的处理 数据清洗方法(重复观测处理.缺失值处理.异常值处理) 数据子集的获取 透 ...

  4. python数据处理pdf_Python数据处理pdf (中文版带书签)、原书代码、数据集

    原博文 2018-08-08 16:02 − Python数据处理 前言 xiii第1 章 Python 简介 11.1 为什么选择Python 41.2 开始使用Python 41.2.1 Pyth ...

  5. #第17篇分享:python数据处理-pandas,numpy,matplotlib

    #python数据处理-pandas,numpy,matplotlib: 对于数据来说,有数据爬取-爬虫,数据处理-就是今天学习的,以及数据分析-sklearn,tensoflow机器学习及深度学习: ...

  6. 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    对python 数据处理中的LabelEncoder 和 OneHotEncoder详解_起飞的木木的博客-CSDN博客_labelencoder原理

  7. python数据处理实例-Python数据处理numpy.median的实例讲解

    numpy模块下的median作用为: 计算沿指定轴的中位数 返回数组元素的中位数 其函数接口为: median(a, axis=None, out=None, overwrite_input=Fal ...

  8. insert into 多条数据_最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)

    点击上方"AirPython",选择"加为星标" 第一时间关注 Python 技术干货! 1. 前言 上篇文章 聊到 Python 处理 Mysql 数据库最常 ...

  9. 太赞了!用200道题彻底搞定Python数据处理!

    前言 Pandas与NumPy都是Python数据分析中的利器,但是对着官方文档学习是十分枯燥且低效的方式,因此我精心挑选了200个Python数据处理中的常用操作,并整理成习题的形式创作了Panda ...

最新文章

  1. 工程介绍好处费性质_水运工程造价工程师继续教育课件上新丨海外水运工程造价编制介绍课程发布...
  2. echarts geo地图示例_用Python,炫酷地图轻松绘制,一起来学习吧
  3. StringTokenizer(字符串标记)
  4. STC89C52单片机 串口通信
  5. 牛客网暑期ACM多校训练营(第五场)A-gap (二分答案)
  6. 再推新机!小米A3正式发布 售价249欧元起
  7. java 自定义事件_在Java中创建自定义事件
  8. 源码安装python3.7.0
  9. 搭建rtmp推流服务器
  10. HAWQ取代传统数仓实践(一)——为什么选择HAWQ
  11. Unity 动态编辑Terrain地形(五)贴图
  12. ocr---训练自己的数据实现文本检测(kears实现east网络)
  13. 住宅代理和数据中心代理哪个更好?
  14. Android recyclerview上拉加载更多
  15. windows系统搜索本地文件缓慢怎么办?
  16. One PUNCH Man——神经网络
  17. 【案例分析】服务器数据恢复
  18. Appollo高精度地图
  19. 用vs2015和qt5实现飞舞的蝴蝶
  20. 信息系统项目管理师案例分析万金油

热门文章

  1. java color类 蓝色_java中Color类的简单总结
  2. Lerna 运行流程剖析
  3. 面试官问 async、await 函数原理是在问什么?
  4. openfiler的iSCSI配置(二)
  5. 【columnstore】mariadb columnstore 数据迁移
  6. 关于swiper的tab(选项卡)中设置了autoHeight没有效果解决
  7. 8月19学习练习[两三个TableView并排显示]
  8. Gradle 1.12用户指南翻译——第五十四章. 构建原生二进制文件
  9. Nginx monitor
  10. 代码的坏味道之一——译自《重构》