一、文件的类型(编码不同分类)
1.文本文件:基于字符编码,存储的是普通字符串,不包括字体,字号,样式,颜色等信息,
可通过文本文件编辑器显示和编辑。如.txt/.py/.html/.csv/.xls/.xlsx
2.二进制文件:基于至编码的,以字节形式存储,其编码长度根据值得大小长度可变。
如.jpg/.avi等图片.音频或视频文件
二、文件的操作
1、使用open()函数打开(或建立文件),返回一个file对象;
2、使用file对象的读/写方法对文件进行读/写操作;
3、使用file对象的close()方法关闭文件;
4、示例如下:
f = open(r'C:\\Users\\ASUS\\Desktop\\demo1\\StuPack_8\\See You Again.txt')
#使用open()函数打开指定路径的文件,返回一个f对象
f.read() #使用f对象的方法read()读取内容
f.close() #使用f对象的方法close()关闭文件
f = open('StuPack_8/Dream It Possible.txt','rt',encoding = 'utf-8')#'utf-8'
file = f.readlines()
for line in file: #读一行打印一行,直到读完
print(line)
示例2:操作二进制文件¶
#(1)导入第三方库
from PIL import Image #导入第三方库图像的Image模块()提前需要安装pip install pillow)
im = Image.open('StuPack_8/Five_Star.png') #创建打开文件对象im
im.save('Five_Star.png') #打开后保存在当前文件夹里
im.show() #在当前窗口显示图像
im.close() #关闭文件
示例3:写文本文件:想当前文件夹demo里写入文件test.txt.其内容为10行自己的学号姓名,每行前面有序号
#写入内容
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中的内容
with open('test.txt','w+',encoding = 'utf-8') as f_w: #用with open() as对象结构,自动关闭文件
for i in range(1,20):
f_w.write('谢禹骏117'+'\t'+str(i)+'\n')
f_r = open('test.txt',encoding = 'utf-8')
f = f_r.readlines()
for line in f:
print(line)
三、Excel文件的读写
1、第三方库模块的安装(读取:xlrd,写入:xlwt)
2、示例1:读取Excel文件内容,将结果保存以列表中
操作步骤:
(1)导入模块xlrd
(2)打开工作簿Book
(3)指定工作簿中的表单Sheet
(4)根据行列序号读取内容
import xlrd #(1)导入模块xlrd
wb = xlrd.open_workbook('StuPack_8/school.xls') #(2)打开指定位置的文件工作簿school.xls,并创建文件对象wb
sheet = wb.sheet_by_index(0) #(3)指定工作簿中的表单Sheet
#根据索引获取表单(0:第一个,1:第二个)
schools = [] #定义一个二维列表schools存放行列
for row in range(sheet.nrows):
school = [] #定义一个一维列表存放单元格具体的值
for col in range(sheet.ncols):
content = sheet.cell_value(row,col) #将单元格具体的值写入列表school[]
school.append(content) #通过列表方法append追加写入读取内容
schools.append(school)
for school in schools: #打印全部内容
print(school)
3、示例二:将示例一读取的Excel文件内容,写入到另一个Excel中,对学校所在省份进行简单判断,第一行合并单元格显示标题。
操作步骤:
(1)导入模块:xlwt
(2)构造工作簿:Workbook
(3)为工作簿添加表单:Worksheet
#(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('StuPack_8/school.xls')
#(5)函数的调用
#调用读取函数创建对象school_list,将素材stu_pack里的文件school.xls作为实参传给形参
school_list = read_excel('StuPack_8/school.xls')
#调用写入函数,将读取函数的数据作为实参传给形参写入文件“上海市高校信息表.xls”到指定的文件夹R&Q_pic里面保存
write_excel(school_list)
#将写入的文件读取在当前窗口,
school_list = read_excel('StuPack_8/school.xls')
# for school in school_list:
# print(school)
i=1
for school in schools: #读取文件的内容,打印十行
if i<12:
print(school)
i += 1