打开文件
打开文件的方法
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)file参数:指定了被打开的文件名称
mode参数:指定了打开文件后的处理方式,默认为r读模式
buffering参数:指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大
于1则表示缓冲区的大小。默认值是缓存模式
encoding参数:指定对文本进行编码和解码的方式,只适用于文本模式,可以使
用Python支持的任何格式,如GBK、utf8、CP936等等。
open()函数返回1个文件对象,通过该文 件对象可以对文件进行读写操作。如果指定文件不存在、 访问权限不够、磁盘空间不足或其他原因导致创建文件对 象失败则抛出异常。
即使写了关闭文件的代码,也无法保证文件一定能 够正常关闭。例如,如果在打开文件之后和关闭文件之前 发生了错误导致程序崩溃,这时文件就无法正常关闭。在 管理文件对象时推荐使用with关键字
例如:1
2
3with open('data.txt', 'r') as f:
data = f.read()
print('context: {}'.format(data))
打开文件的方式
文件的常用属性
例如:1
2
3with open('test.txt') as f:
print(f.mode)
f.close()
输出为r
文件的常用方法read([size]): 从文本文件中读取size个字符(Python 3.x)的内容作为结果返回,或从二进制文件
中读取指定数量的字节并返回,如果省略size则表示读取所有内容
write(s) :把s的内容写入文件
writelines(s) :把字符串列表写入文本文件,不添加换行符
readline() :从文本文件中读取一行内容作为结果返回
readlines() :把文本文件中的每行文本作为一个字符串存入列表中,返回该列表,对于大文件会占 用较多内存,不建议使用
seek(offset[, whence]): 把文件指针移动到新的字节位置,offset表示相对于whence的位置。whence为0表示从 文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0
tell() :返回文件指针的当前位置
flush() :把缓冲区的内容写入文件,但不关闭文件
close():关闭文件
关于于seek()方法的是把 文件指针定位到文件中指定字节的位置,所以若为中文,则注意一个汉字两个字节其他文件操作查看:Python文件
文件级操作
Python的多种文件模块如果需要处理文件路径,可以使用os.path模块中的对象和 方法;
如果需要使用命令行读取文件内容可以使用fileinput模块;
创建临时文件和文件夹可以使用tempfile模块;
OS模块常用方法
os.path模块常用方法
shutil模块常用方法
os模块目录操作
Python对图像文件的处理
安装Pillow库
import PIL #引入PIL中的所有类
from PIL import Image #单独引入Image类
PIL库的Image类常用方法
Image类的打开或创建图片方法描述Image.open(filename)根据参数加载图像文件
Image.new(mode,size,color)根据给定参数创建一个新图像
Image.open(StringIO.StringIO(buffer))从字符串中获取图像
Image.frombytes(mode,size,data)根据像素点data创建图像
Image.verify()对图像文件完整性进行检查,返回异常
Image类的4个处理图片的常用属性属性描述Image.format标识图像格式和来源,如果图像不是从文件读取,值为None
Image.mode图像的色彩模式,”L”为灰度图像,“RGB”为真彩色图像,“CMYK”为出版图像
Image.size图像的宽度和高度,单位为像素(px),返回值为二元元组
Image.pallette调色板属性,返回一个ImagePallete类型
Image还能读取序列图像,包括GIF、FLI、FLC、TIFF等格式,open()方法打开时自动加载序列中的第一帧,使用seek()和tell()方法可以在不同帧之间移动
Image类的图像转换和保存方法方法描述Image.save(filename,format)将图像保存为名为filename的文件,format是图片格式
Image.convert(mode)使用不同的参数,转换图像为新的模式
Image.thumbnail(size)创建图像的缩略图,size是缩略图尺寸的二元元组
Image类的图像旋转和缩放方法描述Image.resize(size)按size大小调整图像,生成副本
Image.rotate(angle)按angle角度逆时针旋转图像,生成副本
Image类的图像像素和通道处理方法方法描述Image.point(func)根据函数func的功能对每个元素进行运算,返回图像副本
Image.split()提取RGB图像的每个颜色通道,返回图像副本
Image.merge(mode,bands)合并通道,其中mode表示色彩,bands表示新的色彩通道
Image.blend(im1,im2,alpha)将两幅图片im1和im2按照如下公式插值后生成新的图像:im1×(1,0-alpha)+im2×alpha
PIL的ImageFilter类提供了10种图像过滤方法方法描述ImageFilter.BLUR图像的模糊效果
ImageFilter.CONTOUR图像的轮廓效果
ImageFilter.DETAIL图像的细节效果
ImageFilter.EDGE_ENHANCE图像的边界加强效果
ImageFilter.EDGE_ENHANCE_MORE图像的阈值加强效果
ImageFilter.EMBOSS图像的浮雕效果
ImageFilter.FIND_EDGES图像的边界效果
ImageFilter.SMOOTH图像的平滑效果
ImageFilter.SMOOTH_MORE图像的阈值平滑效果
ImageFilter.SHARPEN图像的锐化效果
利用Image类的filter()方法可以使用ImageFilter类,格式Image.filter(ImageFilter.function)
PIL的ImageEnhance类提供了5种图像增强和滤镜方法方法描述ImageEnhance.enhance(factor)对选择属性的数值增强factor倍
ImageEnhance.Color(im)调整图像的颜色平衡
ImageEnhance.Contrast(im)调整图像的对比度
ImageEnhance.Brightness(im)调整图像的亮度
ImageEnhance.Sharpness(im)调整图像的锐度
NumPy库
数组Arrays
NumPy数组是通常的Python数组的扩展。NumPy数组配备了大量的函数和运算符,可以帮助我们快速编写上面讨论过的各种类型计算的高性能代码。
创建数组
常用属性
常用形态操作
切片和索引
切片:和Python列表类似,numpy数组可以使用切片语法。因为数组可以是多维的,所以你必须为每个维度指定好切片。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33import numpy as np
a=np.random.rand(5,3)
print(a)
print(a[2])
print()
print(a[1:3])
print()
print(a[-5:-2:2])
print()
print(a[:3,:2])
print()
print(a[[0,1,2],[2,1,0]])
#数组中(0,2),(1,1)和(2,0)位置处的元素
#输出:
# [[0.44761556 0.81326569 0.79004551]
# [0.57454174 0.39755703 0.48081083]
# [0.68405094 0.74275781 0.90948634]
# [0.8489756 0.56085858 0.87524095]
# [0.14517911 0.79332683 0.67406689]]
# [0.68405094 0.74275781 0.90948634]
#
# [[0.57454174 0.39755703 0.48081083]
# [0.68405094 0.74275781 0.90948634]]
#
# [[0.44761556 0.81326569 0.79004551]
# [0.68405094 0.74275781 0.90948634]]
#
# [[0.44761556 0.81326569]
# [0.57454174 0.39755703]
# [0.68405094 0.74275781]]
#
# [0.79004551 0.39755703 0.68405094]
numpy库的算术运算函数
numpy库的比较运算函数
图像和数据处理
图像和数组的转换
图像的数组表示和转换
1、将图像转换为数组:
im=Image.open(filename)
arr=np.array(im)
2、将数组存储为图像:
pil_im=Image.fromarray()
matplotlib库的使用
matplotlib库是提供数据绘图功能的第三方库,其pyplot字库主要用于实现各种数据展示图形的绘制。
matplotlib画图可以总结为3个步骤:获取数据——画出基本图形——设置细节
使用汉字
Matplotlib 默认情况不支持中文,我们需要这样设置:1
2matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']='SimHei'
常用绘图函数
绘图区域函数
plt和pillow的结合使用