文件的操作

一、文件的类型(编码不同分类)

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值