Day 21 csv和pdf文件操作
一.csv文件读操作
1.csv读操作
1)csv.reader(文件对象) - 获取指定csv文件中的内容,返回一些迭代器,迭代器中的元素是每一行数据对应的一个列表
2)csv.DictReader(文件对象) - 获取指定csv文件中的内容,返回一些迭代器,迭代器中的元素是每一行数据对应的一个字典
2.获取内容
通过next() 或者遍历获取(和迭代器获取方式一样)
二.csv文件写操作
1.创建writer
1)csv.writer(文件对象)
writer=csv.writer(open('上课资料/学生信息.csv','w',newline='',encoding='utf-8'))
2.写入数据
writer对象.writerow(一行内容对应的列表)
writer对象.writerows(列表中的元素是每一行内容对应的小列表)
3.创建字典的writer
csv.DictWriter(文件对象,字典所有的键)
4.将数据写入文件
1)将字典的键作为第一行内容写入文件中
writer对象.writerheader()
2)以字典的方式写入数据
writer对象.writerow()
writer对象.writerows()
三.pdf文件操作
from PyPDF2 import PdfFileReader, PdfFileWriter
1.pdf读操作
1)创建reader:PdfFileReader(文件对象)
reader=PdfFileReader(open(‘上课资料2/存储引擎的讲解.pdf’, ‘rb’))
2)获取总页数:reader对象.numPages
page_num=reader.numPages
print(page_num)
3)获取指定页:reader对象.getPage(页数)
页数从零开始
2.pdf文件写操作
1)创建writer
创建一个空白的pdf文件(一页内容都没有)
PdfFileWriter()
2)添加页
writer对象.addPage(页对象) - 添加从别的pdf文件中获取的页
添加空白页:writer对象.addBlankPage()
3)保存数据
writer对象.write(open(文件路径,‘wb’))
四.添加水印
import reportlab as reportlab
from PyPDF2 import PdfFileReader, PdfFileWriter
1.准备水印文件和源文件
water_reader=PdfFileReader(open(‘文件路径’,‘rb’)
file_reader=PdfFileReader(open(‘文件路径’,‘rb’)
2.水印对应的页
water_page=water_reader.getPage(0)
3.准备要添加水印的页
page1=file_reader.getPage(0)
4.合并水印页和需要添加水印的页
page1.mergePage(water_page)
5.准备空的pdf用来保存水印
writer=PdfFileWriter()
writer.addPage(page1)
writer.write(open(‘文件路径’,‘rb’)
五.创建水印文件
from reportlab.pdfgen import canvas # 提供pdf文件
from reportlab.pdfbase import pdfmetrics # 注册字体
from reportlab.pdfbase.ttfonts import TTFont # 提供字体对象
1.注册字体
pdfmetrics.registerFont(TTFont('font2', 'files/dd.ttf'))
2.创建空白pdf
pdf = canvas.Canvas(‘files/water.pdf’)
3.渲染文字
1)设置字体
setFont(字体名, 字体大小)
pdf.setFont(‘font1’, 30)
2)设置文字颜色
计算机三原色:红、绿、蓝 (0~255)
setFillColorRGB(r, g, b, 透明度)
注意:r、g、b的取值范围是0~1
透明度取值范围0~1
旋转
pdf.rotate(45)
3)渲染文字(写字)
pdf.drawString(30, 20, ‘YuTing’)
4.保存文件
pdf.save()
Day21 - 作业
作业:将指定文件夹中所有的pdf文件都添加属于自己的水印
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import reportlab as reportlab
pdfmetrics.registerFont(TTFont('font1','上课资料/bb.ttf'))
pdf=canvas.Canvas('上课资料/water.pdf')
pdf.setFont('font1',15)
pdf.setFillColorRGB(100/255,200/255,400/255,1)
pdf.rotate(45)
pdf.drawString(350,10,'周爽的第一个水印欧耶')
pdf.save()