一、文件的类型(编码不同分类)
1、文本文件:基于字符编码,存储的是普通字符串,不包括字体、字号、样式、颜色等信息,
可通过文件编辑器显示和编辑,如txt/.py/.html/.csv/.xls/.xlsx
2.二进制文件:基于值编码的,以字节形式存储,其编码长度根据值大小长度可变。
如.jpg/.avl等图片,音频或视频文件
二、文件的操作
1、使用open()函数打开(或建立)文件,返回一个file对象。
2、使用file对象的读/写方法对文件进行读/写操作。
3、使用file对象的close()方法类关闭文件。
4、示例如下
示例1:操作文本文件(操作,读取,)
使用open()函数打开指定路径的文件,返回一个f对象。../Stu_pack/See You Again.txt表示在当前目录(或者程序运行的根目录)上一级目录中的 Stu_pack 文件夹里面的 See You Again.txt 文件
f = open('../Stu_pack/See You Again.txt') #使用open()函数打开指定路径的文件,返回一个f对象
用file对象的方法read()读取内容
f.read() #用file对象的方法read()读取内容
运行结果:运行结果显示的内容就是'../Stu_pack/See You Again.txt'路径中See You Again.txt文本文件里面的内容。使用f对象的方法close()关闭文件,如果使用完不关闭文件的话,这些资源将一直被占用。如果频繁打开大量文件而不关闭,可能会导致系统资源耗尽。
f.close() #使用f对象的方法close()关闭文件
下面这段代码可以用于读取 "../Stu_pack/Dream It Possible.txt" 文件中的文本内容并将其赋值给f。 'rt' 表示以文本模式打开文件,并且使用 UTF-8 编码方式("utf-8")进行读取。
file = f.readlines()表示读取文件f的所有行,并储存在列表中。
接下来就是遍历文件中的每一行,并打印出来。
f = open('../Stu_pack/Dream It Possible.txt','rt',encoding = 'utf-8') #‘utf-8’中间是杠不是下划线
file = f.readlines()
for line in file: #读一行打印一行,知道读完
print(line)
运行结果:运行结果中的内容为'../Stu_pack/Dream It Possible.txt'路径中Dream It Possible.txt文本文件中的内容。示例2:操作二进制文件
#(1)导入第三方库(图象库)
from PIL import *
from PIL import Image #导入Image类
im = Image.open('../Stu_pack/Five_Star.png') #创建打开文件对象im
im.save('Five_Star.png') #打开后保存在当前文件夹里
im.show() #在当前窗口显示图像
im.close() #关闭文件
运行结果:运行结果中的图片就是../Stu_pack/Five_Star.png路径下的Five_Star.png图片示例3:写文本文件:向当前文件demo里写入test.txt,其内容为10行123456789,每行前面有序号。
#写入内容
f_w = open('test.txt','w',encoding = 'utf-8') #创建写入文件对象 w:写入,编码为utf-8
for i in range(1,11): #一行一行的写入
f_w.write(str(i)+'\t' + '123456789' + '\n') #用write()方法写入内容
f_w.close() #如果不关闭文件内容不能写进去
#读取test.txt
f_r = open('test.txt','rt',encoding = 'utf-8')
f = f_r.readlines()
for line in f: #读一行打印一行,知道读完
print(line)
f_r.close() #关闭文件
运行结果:也可以一次性的读取 test.txt中的内容
#写入内容
f_w = open('test.txt','w',encoding = 'utf-8') #创建写入文件对象 w:写入,编码为utf-8
for i in range(1,11): #一行一行的写入
f_w.write(str(i)+'\t' + '123456789' + '\n') #用write()方法写入内容
f_w.close() #如果不关闭文件内容不能写进去
#读取test.txt
f_r = open('test.txt','rt',encoding = 'utf-8')
f = f_r.readlines()
f_r.seek(0) #将文件指针重新定位到文件开始位置
print(f_r.read()) #重新一次性读取文件
f_r.close() #关闭文件
运行结果:
其中f_r.seek(0)
: 使用 seek(0)
方法将文件指针重新定位到文件的起始位置,以便重新读取文件内容。
在写入时也可以使用with open() as 对象结构,自动关闭文件
with open('test.txt','w+',encoding = 'utf-8') as f_wl: #用with open() as 对象结构,自动关闭文件
for i in range(1,11):
f_wl.write('123456789' + '\t'+str(i) + '\n')
三、excel文件的读写
1、第三方库模块的安装(读取:xled,写入:xlwt)
2、示例1:读取Excel文件内容,将结果保存以列表中
操作步骤:
(1)导入模块xlrd
(2)打开工作薄Book
(3)指定工作薄中的表单Sheet
(4)根据行列序号读取内容
在使用xlrd库和xlwt库时要先进行安装,使用 pip install xlrd命令进行安装读取Excel 文件的库,和 pip install xlwt命令安装创建和写入 Excel文件的库。
#(1)导入模块xlrd
import xlrd #第三方库,其方法之前必须添加库名
#如果没有安装,需要运行,pip install xlrd网络安装
#(2)打开工作薄Book
wb = xlrd.open_workbook('../Stu_pack/school.xls')
#(3)指定工作薄中的工作表sheet
sheet = wb.sheet_by_index(0) #检索第一次工作表
#(4)根据行列序号读取内容
schools = [] #定义 一个二维列表schools
#or row in range(0,11) #打印十行内容
for row in range(sheet.nrows): #以文件schools的行遍历
school = [] #定义一个以为列表school
for col in range(sheet.ncols): #以文件schools的列遍历
content = sheet.cell_value(row,col) #读出单元格内容并保存在变量content里面
school.append(content) #将从单元格读取的内容追加到一维列表school里面
schools.append(school) #将读取的一行内容追加到二维列表schools里面
#(5)读取文件的内容并打印
for school in schools: #读取文件的内容
print(school)
#也可以只打印十行内容
# i=1
# for school in schools: #读取文件的内容,打印十行
# if i<12:
# print(school)
# i += 1
2、Excel文件写入操作步骤:
(1)导入模块:xlwd
(2)构建工作簿:Workbook
(3)为工作簿添加表单:Worksheet
(4)根据行列序号写入内容
(5)保存文件
示例2:将示例1 读取的Excel文件内容,写入到另外一个Excel中
对学校所在省份进行简单判断,将上海市的高校相关信息写入到新文件里,文件名为“上海市高校信息表.xls”。第一行合并单元格显示标题
#(1)导入模块:xlwd
import xlwt ##第三方库,其方法之前必须添加库名
import xlrd
#(2)构建工作簿:Workbook
def read_excel(file_name): #定义读取文件函数read_excel()
wb = xlrd.open_workbook(file_name)
sheet = wb.sheet_by_index(0) #检索第一次工作表
schools = [] #定义 一个二维列表schools
for row in range(sheet.nrows): #以文件schools的行遍历
school = [] #定义一个以为列表school
for col in range(sheet.ncols): #以文件schools的列遍历
content = sheet.cell_value(row,col) #读出单元格内容并保存在变量content里面
school.append(content) #将从单元格读取的内容追加到一维列表school里面
schools.append(school) #将读取的一行内容追加到二维列表schools里面
return schools #返回二维列表内容
#(3)写入文件内容
def write_excel(schools): #定义写入文件函数
wb = xlwt.Workbook(encoding='utf-8') #创建写入 文件的对象wb
sheet = wb.add_sheet('上海市高校信息表') #创建一个工作表名为“上海市高校信息表”
sheet.write_merge(0,0,0,6,'上海市高校信息表') #写表标题并合并单元格(A1:G1)
for col in range(7): #写列表名称
sheet.write(1,col,schools[0][col]) #第二行第一列开始写内容shcools[0][clo]
row_num = 2 #从第三行开始写数据
for school in schools: #一行一行的写数据
if school[2] == '上海市':
for col in range(7):
sheet.write(row_num,col,school[col])
row_num = row_num + 1 #将行数内容填写完自动增加 1行
#(4)保存文件内容
wb.save('../R&Q_pic/上海市高校信息表.xls')
#(5)函数的调用
#调用读取函数创建对象school_list,将素材stu_pack里的文件school.xls作为实参传给形参
school_list = read_excel('../Stu_pack/school.xls')
#调用写入函数,将读取函数的数据作为实参传给形参写入文件“上海市高校信息表.xls”到指定的文件夹R&Q_pic里面保存
write_excel(school_list)
#将写入的文件读取在当前窗口,
school_list = read_excel('../R&Q_pic/上海市高校信息表.xls')
# for school in school_list:
# print(school)
i=1
for school in schools: #读取文件的内容,打印十行
if i<12:
print(school)
i += 1
运行结果: