文件的使用
python能够以文本和二进制两种方式处理文件
二进制文件直接由比特0和比特1组成,没有统一字符编码,文件内部数据的组织格式与文件用途有关。二进制文件和文本文件最主要的区别在于是否有统一的字符编码
- 理解文本文件和二进制文件的区别
用文本编辑器生成一个包含“中国是个伟大的国家!”的txt格式文本文件,然后分别用文本文件格式和二进制文件格式读入,并打印输出效果。
textFile=open('7.1.txt','rt',encoding='utf-8')
print(textFile.readline())
textFile.close()
binFile=open('7.1.txt','rb')
print(binFile.readline())
binFile.close()

-
文件的打开模式(共7个)
open()函数默认采用'rt'(文件只读)模式
读取一个二进制文件,如一张图片,一段视频或一段音乐,需要使用文件
当文件被打开后,根据文件打开方式不同可以对文件进行相应的读写操作。
-
文件内容读写方式(共4个)
文本文件逐行打印
用户输入文件路径,以文本文件方式读入文件内容并逐行打印
fname=input("请输入要打开的文件:")
fo=open(fname,"r",encoding='utf-8')
for line in fo.readlines():
print(line)
fo.close()

-
文件内容写入方法(共3个)
向文件写入一个列表
向文件写一个列表类型,并打印输出结果
fname=input("请输入要写入的文件:")
fo=open(fname,"w+",encoding='utf-8')
ls=["唐诗","宋词","元曲"]
fo.writelines(ls)
for line in fo:
print(line)
fo.close()

程序没有输出写入的内容,这是因为文件写入内容后,当前文件操作指针在写入内容的后面,第五行到第七行代码从指针开始想后读入并打印内容,被写入的内容却在指针的前面,因此未能被打印出来。
解决方法:可以在写入文件后增加一条代码fo.seek(0)将文件操作指针返回到文件开始,即可显示写入的内容。
fname=input("请输入要写入的文件:")
fo=open(fname,"w+",encoding='utf-8')
ls=["唐诗","宋词","元曲"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
print(line)
fo.close()

PIL库的使用
PIL库是一个具有强大图像处理能力的第三方库,不仅包含了丰富的像素,色彩操作功能,还可以用于图像归档和批量处理。
PIL库支持图像存储、显示和处理,他能够处理几乎所有的图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条图像和文字等操作。
PIL库主要实现图像归档和图像处理两方面功能需求。
- 图像归档
对图像进行批处理、生成图像预览、图像格式转换等 - 图像处理
图像基本处理、像素处理、颜色
处理等。
PIL库的image类解析
image是PIL最重要的类,它代表一张图片,引入这个类的方法是
from PIL import Image
-
Image类的图像读取和创建方法(共5个)
通过image打开图像文件时,图像的栅格数据不会被直接解码或者加载,程序只是读取了图像文件头部的元数据信息,这部分信息标识了图像格式、颜色、大小等。
-
Image类的常用属性(共4个)
Image还能读取序列类图像文件,包括gif,fli,flc,tiff等格式文件。open()方法打开一个图像时自动加载到序列的第一帧,使用seek()和tell()方法可以在不同帧之间移动。
- Image类的序列图像操作方法(共2个)
Image.seek(frame)跳转并返回图像中的指定帧
Image.tell()返回当前帧的序号
GIF文件图像的提取
对一个gif格式的动态文件,提取其中各帧图像,并保存为文件。
from PIL import Image
im=Image.open("F:\python\第七章\pica.gif") #读入一个gif文件
try:
im.save('picframe{:02d}.png'.format(im.tell()))
while True:
im.seek(im.tell()+1)
im.save('picframe{:02d}.png'.format(im.tell()))
except:
print("处理结束")

-
image类的图像转换和保存方法(共3个)
PIL库还提供了格式转换功能
生成缩略图
-
Image类可以缩放和旋转图像
retate()方法是以逆时针旋转的角度值作为参数来旋转图像。
-
image类的图像像素和通道处理方法(共4个)
图像的颜色交换
交换图像中的颜色。可以通过分离RGB图片中的3个颜色通道实现颜色交换。
from PIL import Image
im=Image.open('birdnest.jpg')
r,g,b=im.split()
om=Image.merge("RGB",(b,g,r))
om.save("birdnestGGR.jpg")
原图

交换后

操作图像的每个像素点需要通过函数实现,可以采用lamba函数和point()方法。


PIL库的ImageFilter类和ImageEnhance类提供了过滤图像和增强图像的方法。
- ImageFilter类的预定义过滤方法(共10个)
利用Image类的filter方法可以使用ImageFilter类
Image.filter(ImageFilter.function)
图像的轮廓获取
from PIL import Image
from PIL import ImageFilter
im=Image.open('F:\\python\\第七章\\birdnest.jpg')
om=im.filter(ImageFilter.CONTOUR) #图像的轮廓效果
om.save("F:\\python\\第七章\\newbird.jpg")

ImageEnhance类提供了更高级的图像增强功能,如调节色彩、亮度、对比度、锐化等
-
ImageEnhance类的图像增强和滤镜方法(共5个)
图像的对比度增强
增强图像的对比度为初始的20倍。
from PIL import Image
from PIL import ImageEnhance
im=Image.open('F:\\python\\第七章\\birdnest.jpg')
om=ImageEnhance.Contrast(im) #调整图像的对比度
om.enhance(20).save('F:\\python\\第七章\\bird1.jpg')

一二维数据的格式化和处理
一二维数据的表示和书写,CSV文件的每一行是数据,可以使用python中的列表类型表示,整个CSV文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。
导入CSV格式数据到列表
fo=open("F:\\python\\第七章\\7.12.csv")
ls=[]
for line in fo:
line=line.replace("\n","")
ls=line.split(",")
lns=""
for s in ls:
lns+="{}\t".format(s)
print(lns)
fo.close()
CSV格式的HTML展示
这是一个将CSV格式转换为HTML展示的实例
将CSV文件转化为HTML文件需要三个步骤:
1、 读入CSV文件,获得文件数据
2、对数据进行格式化处理和转换
3、输出HTML格式的文件
seg1='''
<!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gb2312>
<h2 align=center>2016年7月部分大中城市新建住宅价格指数</h2>
<table border='1' align='center' width='700%'>
<tr bgcolor='orange'>\n
'''
seg2 = "</tr>\n"
seg3 = "</table>\n</body>\n</html>"
def fill_data(locls):
seg = '<tr><td align="center">{}</td><td align="center">\
{}</td><td align="center">{}</td><tdalign="center">\
{}</td></tr>\n'.format(*locls)
return seg
fr=open("F:\\python\\第七章\\7.12.csv","r")
ls=[]
for line in fr:
line=line.replace("\n","")
ls.append(line.split(","))
fr.close()
fw = open("F:\\python\\第七章\\price2016.html", "w")
fw.write(seg1)
fw.write('<th width="25%">{}</th>\n<th width="25%">{}</th>\n<th width="25%">{}</th>\n<th width="25%">{}</th>\n'.format(*ls[0]))
fw.write(seg2)
for i in range(len(ls)-1):
fw.write(fill_data(ls[i+1]))
fw.write(seg3)
fw.close()

JSON库的使用
json库是处理JSON格式的python标准库
import json
-
json库的操作类函数(共四个)















