书签 分享 收藏 举报 版权申诉 / 52
上传文档赚钱

类型Python程序设计第7章-文件和IO课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2942257
  • 上传时间:2022-06-13
  • 格式:PPT
  • 页数:52
  • 大小:2.23MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Python程序设计第7章-文件和IO课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Python 程序设计 文件 IO 课件
    资源描述:

    1、2022-6-3第第7章章 文件和文件和I/O主 讲 人:目录目录2022-6-321. 文件基础知识2. 文件操作3. 目录操作2022-6-3概述概述本章要解决的问题如下: 什么是文件 怎样操作文件 怎样操作目录2022-6-31. 文件基础知识1.1什么是文件 文件是存储在外部介质上的数据集合,与文件名相关联。 按文件中的数据组织形式可以把文件分为两类: 文本文件 二进制文件2022-6-31. 文件基础知识1.2文件的打开或创建文件变量名=open(文件名, 打开方式, 缓冲区)示例如下:f1=open(file1.txt, r)f2=open(file2.txt, w)2022-6-

    2、31. 文件基础知识1.3字符编码编码是用数字来表示符号和文字的一种方式,是符号、文字存储和显示的基础。信息传递与编码关系的例子如右图所示:2022-6-31. 文件基础知识常见的编码 UTF-8 GB2312 GBK CP936 Unicode2022-6-31. 文件基础知识1.4文件的写入1文本文件的写入以下两种方法可以进行文本文件的写入。 write(str):将字符串str写入文件。 writelines(sequence_of_strings):写多行到文件,其中sequence_of_strings是由字符串所组成的列表,或者迭代器。2022-6-31. 文件基础知识文件的写过程

    3、与存储如下图:2022-6-31. 文件基础知识示例把字符串“重庆邮电大学123cqupt”写入文件F7_1.txt中,采用GBK编码,显示文件的长度(总字节),默认采用的是GBK编码。2022-6-31. 文件基础知识程序#Exp7_1.py#coding=GBKf=open(F7_1.txt,w)f.write(重庆邮电大学123cqupt)f.seek(0,2) #把文件指针移到文件尾length=f.tell() #会返回文件尾的位置,其值刚好等于文件长度f.close()print (文件长度=,length)程序运行结果程序运行结果文件长度=212022-6-31. 文件基础知识示

    4、例在Windows系统中,把字符串“重庆邮电大学123cqupt ”用UTF-8编码写入文件F7_2.txt中,并显示文件的长度(总字节数)。2022-6-31. 文件基础知识程序import codecs #自然语言编码转换模块#Exp7_2.py#coding=UTF-8s=重庆邮电大学123cquptf=codecs.open(F7_2.txt,w,UTF-8) #UTF-8编码方式f.write(s)f.seek(0,2) #把文件指针移到文件尾length=f.tell() #文件尾的位置,其值刚好等于文件长度(字节数)f.close()print(文件长度=,length)程序运行

    5、结果程序运行结果文件长度=272022-6-31. 文件基础知识示例在文件F7_2.txt末尾追加两行内容。#Exp7_3.pyf=open(F7_2.txt,a+)s=重邮在山上n重邮景色很美nf.write(s)f.close()2022-6-31. 文件基础知识2二进制文件的写入以下两种方法可以进行二进制文件的写入。 一种是通过struct模块的pack()方法把数字和布尔值转换成字节串(以字节为单位的字符串),然后用write()方法写入二进制文件中,字符串则可直接写入二进制文件中。pack()方法的语法是:pack(格式串,数字对象表)。 另外一种是用pickle模块的dump()方

    6、法直接把对象转换为字节串(bytes)并存入文件中。1.4文件的写入2022-6-31. 文件基础知识示例把1个整数、1个浮点数、1个布尔型对象、1个字符串存入二进制文件F7_4.dat中。#Exp7_4.py#coding=UTF-8import structn=102400000 x=10.24b=Trues=重庆邮电大学123cquptsn=struct.pack(if?, n, x, b) #把整数n、浮点数x、布尔对象b依次转换为字节串2022-6-31. 文件基础知识程序续f=open(F7_4.dat,wb)f.write(sn) #写入字节串f.write(s) #字符串可直接

    7、写入f.close()2022-6-31. 文件基础知识示例把1个整数、1个浮点数、1个字符串、1个列表、1个元组、1个集合、1个字典存入二进制文件F7_5.dat中。#Exp7_5.py#coding=UTF-8import picklef=open(F7_5.dat,wb)n=7i=102400000a=10.24s=中国人民123abclst=1,2,3,4,5,6J,7,8,92022-6-31. 文件基础知识tu=(-5,10,8)coll=4,5,6dic=a:apple,b:banana,g:grape,o:orangetry:pickle.dump(n,f) #表示后面将要写入

    8、的数据个数pickle.dump(i,f) #把整数i转换为字节串,并写入文件pickle.dump(a,f)pickle.dump(lst,f)pickle.dump(i,f)pickle.dump(a,f)pickle.dump(lst,f)pickle.dump(i,f)pickle.dump(tu,f)pickle.dump(coll,f)pickle.dump(dic,f)except:print(写文件异常!) #如果写文件异常则跳到此处执行f.close()2022-6-31. 文件基础知识1.5文件的读取1文本文件的读取 read(size):读取文件,如果文件大于size个字

    9、节,则只读取size个字节;如果小于size个字节,则读取完;如果不设置size,则默认读取全部。 readline(size):读取一行 readlines(size):读取完文件2022-6-31. 文件基础知识示例读取文件F7_1.txt的前8个字节,并显示:#Exp7_6.pyf=open(F7_1.txt,r)s=f.read(11)#读取文件的前11个字节f.close()print(s=,s)print(字符串s的长度(字符个数)=, len(s)程序运行结果程序运行结果s=重庆邮电大学123c字符串s的长度(字符个数)= 112022-6-31. 文件基础知识示例读取文件F7_

    10、1.txt的全部内容,并显示:#Exp7_7.pyf=open(F7_1.txt,r)s=f.read()#读取文件全部内容f.close()print(s=,s)程序运行结果程序运行结果s=重庆邮电大学123cqupt2022-6-31. 文件基础知识示例使用readline()读取文件F7_2.txt的每一行,并显示: #Exp7_8.pyf=open(F7_2.txt,r)while True: line=f.readline() if line=: breakprint(line),#逗号不会产生换行符,但文件中有换行符,因此会换行f.close()程序运行结果程序运行结果重庆邮电大学

    11、123cqupt重邮在山上重邮景色很美2022-6-31. 文件基础知识示例使用readlines()读取文件F7_2.txt的每一行,并显示:#Exp7_9.pyf=open(F7_2.txt,r)s=f.readlines()for line in s: print(line), #逗号不会产生换行符,但文件中有换行符,因此会换行 f.close()程序运行结果程序运行结果重庆邮电大学123cqupt重邮在山上重邮景色很美2022-6-31. 文件基础知识1.5文件的读取2二进制文件的读取 用struct模块的pack()方法完成转换而写的文件,应该用read()方法读出相应数据的字节串,

    12、然后通过代码还原数据。字符串不用还原。 用pickle模块的dump()方法完成转换而写的文件,应该用pickle模块的load()方法还原对象。2022-6-31. 文件基础知识1.5文件的读取(1)使用read()方法 字符串可以直接读出,数字和布尔对象需要用struct模块的unpack()方法还原。 unpack()方法的语法是: unpack(格式串,字符串表)。2022-6-31. 文件基础知识读取二进制文件F7_4.dat中的数据,并显示:#Exp7_10.pyimport structf=open(F7_4.dat,rb)sn=f.read(9)tu=struct.unpack

    13、(if?,sn) #从字节串sn中还原出1个整数、1个浮点数和1个布尔值,并返回元组。print(tu)n=tu0 x=tu1bl=tu2print(n=,n)print(x=,x)print(bl=,bl)s=f.read(9)f.close()print(s=,s)程序运行结果程序运行结果 (102400000,10.239999771118164,True)n=102400000 x=10.239999771118164bl=Trues=重庆邮电大学123cqupt2022-6-31. 文件基础知识1.5文件的读取(2)使用pickle模块的load()方法 pickle模块的load(

    14、f)方法可以从二进制文件中读取对象的字节串并还原对象,使用起来非常方便。参数f是文件对象,该方法返回还原后的对象。2022-6-31. 文件基础知识示例读取二进制文件F7_5.dat中的数据,并显示:#Exp7_11.pyimport picklef=open(F7_5.dat,rb)n=pickle.load(f) #读取文件的数据个数i=0while i=0,seek(0)表示文件指针移到文件头;n0时,表示移动到文件头之后的位置,从任意位置读取内容时或从任意位置覆盖内容时需要这样做。 seek(0,2)表示把文件指针移到文件尾,在追加新内容时需要这样做。2022-6-31. 文件基础知识

    15、示例把文件F7_1.txt中的“大”替换为“小”,再把“1”替换为“9”,最后在文件末尾增加“软件学院”。#Exp7_12.py#coding=GBK f=open(F7_1.txt,r+)f.seek(5) #文件指针移到大的首字节上f.write(小) #用小覆盖大f.seek(1) #文件指针移到1上f.write(9) #用9覆盖1f.seek(0,2) #文件指针移到文件尾f.write(软件学院) #增加新内容f.close()2022-6-31. 文件基础知识1.5文件的读取4文件的关闭 关闭文件的原因如下: 将写缓存同步到磁盘。 操作系统每个进程打开文件的个数是有限的。 如果打

    16、开文件数到了系统限制,再打开文件就会失败。 最常用的方法就是,调用close()显式地关闭文件。目录目录2022-6-321. 文件基础知识2. 文件操作3. 目录操作2022-6-32. 文件操作2.1常用的文件操作函数一般而言,文件的基本操作都需要os模块和os.path模块。2022-6-32. 文件操作2.2文件的复制复制文件有以下两种方式: 可以用read()与write()方法来实现 另外还可以用shutil模块实现文件的复制,该模块的copyfile()函数就可以实现文件的复制2022-6-32. 文件操作示例编写一个用来复制文件的函数。#Exp7_16.py#coding=GB

    17、Kdef FileCopy(tar_File,res_File): #定义1个函数以完成文件的复制try: f=open(res_File,rb) f2=open(tar_File,wb)except: print(打开文件异常!)return -1s=f.read()f2.write(s)f.close()f2.close()return 02022-6-32. 文件操作示例用FileCopy()函数把文本文件F7_1.txt复制到文件F7_1_2.txt中,把二进制文件F7_9.dat复制到F7_9_2.dat中。#Exp7_17.pyfrom Exp7_16 import import

    18、FileCopy #导入文件Exp7_16.py的方法FileCopyFileCopy(F7_9_2.dat,F7_9.dat) #调用导入的FileCopy方法FileCopy(F7_1_2.txt,F7_1.txt) #调用导入的FileCopy方法2022-6-32. 文件操作示例用shutil模块实现7_17.py的功能。#Exp7_18.pyimport shutilshutil.copyfile(F7_9_2.dat,F7_9.dat) #复制文件F7_9.dat到F7_9_2.datshutil.copyfile(F7_1_2.txt,F7_1.txt) #复制文件F7_1.tx

    19、t到F7_1_2.txt2022-6-32. 文件操作2.3文件的删除文件的删除,需要调用os模块的remove()函数实现,我们使用os.path模块的exists()函数来确保被删除文件存在。示例如下:import os,os.pathfilename=test1.txtfile(filename,w)if os.path.exists(filename): #确认文件是否存在 os.remove(filename) #如果存在则删除else: print(%s does not exist!%filename)2022-6-32. 文件操作2.4文件的重命名使用os模块的rename()

    20、函数可实现对文件或者目录的重命名。os.listdir(.) #列出当前目录的所有文件os.rename(hi.txt,hello.txt)#重命名文件2022-6-32. 文件操作示例问题描述:若当前目录存在文件名为test1.txt的文件,将其重新命名为mytest1.txt,若mytest1.txt已存在,则给出是否需要继续更名的提示。若不要,则提示更名不成功,退出程序;若要,则再次输入更名信息,检测新名是否已经存在,不存在则执行更名操作,输出更名成功提示信息,若存在,则再次询问是否更名。2022-6-32. 文件操作#Exp7_19.pyimport os,os.pathfilenam

    21、e=test1.txtrename=mytest1.txtfile_list=os.listdir(.)print(file_list)if filename in file_list: #判断需要重命名的文件是否存在 while(rename in file_list):#更名是否存在 choice=input(有重命名,继续吗?(Y/N):) if choice in Y,y: rename=input(请重新输入更新文件名:) else: break else: #更名不存在,则进行更名 os.rename(filename,rename) print(重命名成功)else: print

    22、(需要更名的文件不存在!)程序运行结果程序运行结果7-1.py, F7_1.txt, F7_14.dat, F7_1_2.txt, F7_2.txt, F7_4.dat, jp.py, mytest1.txt, ps.py, README.txt, test1.txt, test7-1.txt, test7-2.txt, Untitled 1, _pycache_2022-6-32. 文件操作2.5文件的比较前面说明了文件内容的查找统计与内容的替换,这里将介绍如何利用difflib模块实现对序列或文件的比较。2022-6-32. 文件操作hello.txt的内容为:helloworldhi.t

    23、xt的内容为:hihello#Exp7_22.pyimport difflibimport osA=open(hello.txt,r)B=open(hi.txt,r)contextA=A.read()contextB=B.read()s=difflib.SequenceMatcher(lambda x:x=,contextA,contextB)result=s.get_opcodes()for tag,i1,i2,j1,j2 in result: print(%s contextA%d:%d=%s contextB%d:%d=%s% (tag,i1,i2,contextAi1:i2,j1,j2

    24、,contextBj1:j2)程序运行结果程序运行结果insert contextA0:0= contextB0:3=hi equal contextA0:5=hello contextB3:8=hellodelete contextA5:11= world contextB8:8=目录目录2022-6-321. 文件基础知识2. 文件操作3. 目录操作2022-6-33. 目录操作3.1目录的创建(1)用mkdir(path)创建一个指定目录。 import os os.listdir(f:/)$RECYCLE.BIN, 360Downloads, KuGou, SogouDownLoad,

    25、 System Volume Information, Youku Files os.mkdir(f:/mynewdir) #创建mynewdir目录 os.listdir(f:/)$RECYCLE.BIN, 360Downloads, KuGou, mynewdir, SogouDownLoad, System Volume Information, Youku Files2022-6-33. 目录操作3.1目录的创建(2)用makedirs(path1/path2)创建多个目录。 os.mkdir(./Newdir/subdir) #试图用mkdir创建两级目录:Newdir与下级目录su

    26、bdirTraceback(most recent call last): File , line 1. in FileNotFoundError: WinError 3 系统找不到指定的路径。:./Newdir/subdir os.makedirs(./Newdir/subdir) #用makedirs成功创建两级目录2022-6-33. 目录操作3.2目录的删除删除目录的函数有以下两个。 os.rmdir(dir):只能删除空目录。 shutil.rmtree(dir):空目录、有内容的目录都可以删除。2022-6-33. 目录操作3.2目录的删除(1)用rmdir(path)删除一个目录

    27、。 import os os.listdir(f:/) #检查F盘下的目录与文件信息$RECYCLE.BIN, 360Downloads, KuGou, mynewdir, SogouDownLoad, System Volume Information, Youku Files os.rmdir(f:/mynewdir) #删除mynewdir目录 os.listdir(f:/)#检查是否已经删除$RECYCLE.BIN, 360Downloads, KuGou, SogouDownLoad, System Volume Information, Youku Files(2)用removed

    28、irs(path1/path2/)删除多级目录。 os.removedirs(./Newdir/subdir) #用removedirs成功删除两级目录2022-6-33. 目录操作3.3目录的遍历用listdir(path)函数可以查看指定路径下的目录及文件信息,如果我们希望查看指定路径下全部子目录的所有目录和文件信息,就需要进行目录的遍历,常用方法如下: 递归法 os.walk()函数2022-6-33. 目录操作1递归法分析:采用os.path.join函数获取文件或者目录的完整信息,并输出显示,然后判断该信息是否为目录,若是,则依据该目录进行递归,获取其下一级目录及文件的信息。具体的流程图如右。2022-6-33. 目录操作2. os.walk()函数法os.walk()函数将返回该路径下的所有文件及子目录信息元组,将该信息列表分成文件、目录逐行进行显示。程序具体的流程图如右所示。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Python程序设计第7章-文件和IO课件.ppt
    链接地址:https://www.163wenku.com/p-2942257.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库