Day21-csv文件操作

一:csv文件操作

使用前先导入
import csv

1.打开文件

1)csv.reader(文件对象) - 读获取指定csv文件中的内容,返回一个迭代器,迭代器中的元素是每一行数据对应的列表

2)csv.DictReader(文件对象) - 读获取指定csv文件中的内容,返回一个迭代器,迭代器中的元素是每一行数据对应的一个字典

reader1=csv.reader(open(r'files\北京高档酒店价格分析.csv',encoding='utf-8'))
reader2=csv.DictReader(open(r'files\北京高档酒店价格分析.csv',encoding='utf-8'))

2.获取内容

print(next(reader1))    #['\ufeff酒店名称', '地区', '地址', '卫生评分', '服务评分', '设施评分', '位置评分', '评价数', '装修时间', '房间类型', '房价', '经度', '纬度', '公司', '出行住宿', '校园生活']

print(next(reader1))    #['北京朗丽兹西山花园酒店', '海淀区', '海淀永丰路与北清路十字路口往南800米路南', '4.8', '4.8', '4.7', '4.4', '143', '2014', '豪华套间', '9970', '116.292419', '40.095804', '0', '0', '0']

print(next(reader2))    #{'\ufeff酒店名称': '北京朗丽兹西山花园酒店', '地区': '海淀区', '地址': '海淀永丰路与北清路十字路口往南800米路南', '卫生评分': '4.8', '服务评分': '4.8', '设施评分': '4.7', '位置评分': '4.4', '评价数': '143', '装修时间': '2014', '房间类型': '豪华套间', '房价': '9970', '经度': '116.292419', '纬度': '40.095804', '公司': '0', '出行住宿': '0', '校园生活': '0'}

练习:打印每个酒店对应的平均评分

# 北京朗丽兹西山花园酒店  4.6
for x in reader2:
    score=eval(f"{x['卫生评分']}+{x['服务评分']}+{x['设施评分']}+{x['位置评分']}")/4
    print(x['\ufeff酒店名称'],score)

二:csv写操作

1.创建writer

1) csv.writer(文件对象)

writer = csv.writer(open('files\学生信息.csv', 'w', newline='', encoding='utf-8'))

2.写入数据

writer对象.writerow(一行内容对应的列表)
writer对象.writerows(列表中的元素是每一行对应的小列表)

writer.writerow(['姓名', '性别', '年龄', '分数'])
writer.writerows([
    ['小明', '男', '18', 90],
    ['小花', '女', '20', 88]
])

3.创建字典的writer

csv.DictWriter(文件对象,字典所有的键)

[‘姓名’,‘性别’,‘年龄’,‘分数’]

{‘姓名’:‘小明’,‘性别’:‘男’,‘年龄’:18,‘分数’:90}

writer2 = csv.DictWriter(open('files\学生信息2.csv', 'w', newline='', encoding='utf-8'),
                         ['姓名', '性别', '年龄', '分数']
                         )

4.将数据写进文件

1)将字典的键作为第一行内容写入csv文件中
writer2.writeheader()

2)以字典的当时写入数据

writer2.writerow({'姓名': '小明', '性别': '男', '年龄': 18, '分数': 90})
writer2.writerows([
    {'姓名': '小黑', '性别': '男', '年龄': 20, '分数': 99},
    {'姓名': '小蓝', '性别': '男', '年龄': 19, '分数': 95}
])

三:pdf文件操作

from PyPDF2 import PdfFileReader, PdfFileWriter

1.pdf读操作

1)创建reader:reader=PdfFileReader(文件对象)

reader=PdfFileReader(open(r'files\美食分享.pdf','rb'))

2)获取总页数:reader对象.numPages

page_num=reader.numPages
print(page_num)

3)获取指定页:reader对象.getPage(页数)
页数从0开始

page1=reader.getPage(0)
page2=reader.getPage(1)

2.pdf文件写操作

1)创建writer
创建一个空白的pdf文件(一页内容都没有)

writer=PdfFileWriter()

2)添加页
writer对象.addPage(页对象) - 添加从别的文件中获取到的页

writer.addPage(page1)
#添加空白页
writer.addBlankPage()

3)保存数据

writer.write(open(r'files\new.pdf','wb'))

四:添加水印

from PyPDF2 import PdfFileWriter,PdfFileReader

1.准备水印文件和源文件

water_reader=PdfFileReader(open('files\watermark.pdf','rb'))
file_reader=PdfFileReader(open('files\存储引擎的讲解.pdf','rb'))

2.水印对应的页

water_page=water_reader.getPage(0)

3.准备需要添加水印的页

page1=file_reader.getPage(0)

4.合并水印页和需要添加谁赢的页

page1.mergePage(water_page)

5.准备空的pdf用来保存水印页

write=PdfFileWriter()
write.addPage(page1)

write.write(open(r'files\new_存储引擎的讲解.pdf','wb'))

五:创建水印文件

from reportlab.pdfgen import canvas  # 提供pdf文件
from reportlab.pdfbase import pdfmetrics  # 注册字体
from reportlab.pdfbase.ttfonts import TTFont  # 提供字体对象

1.注册字体

pdfmetrics.registerFont(TTFont('bb', r'files\bb.ttf'))
pdfmetrics.registerFont(TTFont('dd', r'files\dd.ttf'))

2.创建空白pdf

pdf = canvas.Canvas(r'files\water.pdf')

3.渲染文字

1)设置字体

setFont(字体名,字体大小)

pdf.setFont('bb', 30)

2)设置字体颜色

计算机三原色:红,绿,蓝 (0~255)
setFillColorRGB(r,g,b,透明度)
注意:r,g,b的取值范围是0~1
透明度取值范围 0~1

pdf.setFillColorRGB(1,0,0,0.5)

#旋转
pdf.rotate(45)

3)渲染文字(写字)

pdf.drawString(300,200,'Jerry')

4)保存文件

pdf.save()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值