Python实用案例教程-第9章-文件操作课件.pptx

上传人(卖家):三亚风情 文档编号:3371827 上传时间:2022-08-24 格式:PPTX 页数:32 大小:1.54MB
下载 相关 举报
Python实用案例教程-第9章-文件操作课件.pptx_第1页
第1页 / 共32页
Python实用案例教程-第9章-文件操作课件.pptx_第2页
第2页 / 共32页
Python实用案例教程-第9章-文件操作课件.pptx_第3页
第3页 / 共32页
Python实用案例教程-第9章-文件操作课件.pptx_第4页
第4页 / 共32页
Python实用案例教程-第9章-文件操作课件.pptx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、文件及其操作文件及其操作第第9 9章章 信息信息永久保存:文件操作永久保存:文件操作0101文文 件件 类类 型型1文本文件文本文件2二进制文件二进制文件1.文本文件文本文件在计算机中构成一个文本最基本的元素是字符,如英文字母、汉字、数字字符串,等等。这些字符在计算机中保存的是它的编码,英文字母、数字等符号的最常见的编码是ASCII编码,表达汉字的编码常见的GBK,还有微软的CP936编码。CP936其实就是GBK,IBM在发明Code Page的时候将GBK放在第936页,所以叫CP936。能够把全世界的符号一起进行的编码是Unicode编码,UTF-8是一种针对Unicode的可变长度字符

2、编码,又称万国码,它用1到6个字节编码Unicode字符。在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。一个句子就是由若干个字符组成,从计算机的角度就是字符串。文本文件存储的是常规字符串组成的文本行,每行以换行符结尾。常规字符串是指记事本之类的文本编辑器能正常显示、编辑并能够直接阅读和理解的字符串,不包括基本的ASCII码中前面那部分字符,在Windows平台中,文本文件扩展名为txt、log、ini的文件都属于文本文件。2二进制文件二进制文件常见的如图形图像文件、音视频文件、可执行文件、资源文件、各种数据库文件、各类Office文件等都属于二进制文件。二进制文件把信息

3、以字节串(bytes)进行存储,而以字节串形式存储二进制文件根据存储的信息不同,可能包含所有组合,所以,一般无法用记事本或其他普通字处理软件直接进行编辑和直接阅读,需要使用对应的软件操作。一个经过编译形成的二进制文件,可以直接执行。可以使用HexEditor、ultraedit等十六进制编辑器可打开二进制文件进行查看和修改。0202文件打开和关闭文件打开和关闭1.打开文件:打开文件:open()方法2.File对象的属性对象的属性:文件对象.属性3.关闭文件:文件对象关闭文件:文件对象.close()方法方法文件打开和关闭文件打开和关闭1.打开文件:打开文件:open()方法方法open()函

4、数可以用指定模式打开指定文件并创建文件对象。文件对象=open(文件名,mode=r,buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)其中:(1)“文件名”指定要打开(文件已经存在)或创建(文件不存在)的文件名称,如果该文件不在当前目录中,可以使用相对路径或绝对路径,使用原始字符串表达,因为文件路径分隔符需要转义字符(/)。(2)mode指定打开文件后的处理方式。例如,“只读”“只写”“读写”“追加”“二进制只读”“二进制读写”等,默认为“文本只读模式”。以不同方式打开文件时,文件指针的初

5、始位置略有不同。以“只读”和“只写”模式打开时文件指针的初始位置是文件头,以“追加”模式打开时文件指针的初始位置为文件尾。以“只读”方式打开的文件无法进行任何写操作,反之亦然。如表7.1所示。文件打开和关闭文件打开和关闭模式说明r以只读方式打开文件,文件的指针将会放在文件的开头。这是默认模式rb以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头。这是默认模式r+用于读写,文件指针将会放在文件的开头rb+以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头w只用于写入。如果该文件已存在,则将其覆盖;如果该文件不存在,则创建新文件wb以二进制格式打开一个文件只用于写入。如果该文件

6、已存在,则将其覆盖;如果该文件不存在,则创建新文件w+打开一个文件用于读写。如果该文件已存在,则将其覆盖;如果该文件不存在,则创建新文件wb+以二进制格式打开一个文件用于读写。如果该文件已存在,则将其覆盖;如果该文件不存在,则创建新文件a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,则创建新文件进行写入ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,则创建新文件进行写入a+打开一个文件用于读写。如果该文件已存在,文

7、件指针将会放在文件的结尾,文件打开时是追加模式。如果该文件不存在,则创建新文件用于读写ab+以二进制格式打开一个文件用于追加。如果该文件已存在,则文件指针将会放在文件的结尾;如果该文件不存在,则创建新文件用于读写表7.1文件打开模式文件打开和关闭文件打开和关闭(3)如果buffering的值设为0,就不会有缓存。如果buffering的值取1,访问文件时会缓存行。如果buffering 1的整数,这就是缓存区的缓冲大小。如果取负值(默认为-1),采用系统默认缓冲大小。文件打开和关闭文件打开和关闭2.File对象的属性对象的属性:文件对象.属性一个文件被打开后,有一个file对象,通过它可以得到

8、如表7.2所示的有关文件的各种信息。属性说明文件对象.closed如果文件已被关闭,则返回True,否则返回False文件对象.mode返回被打开文件的访问模式文件对象.name返回文件的名称3.关闭文件:文件对象关闭文件:文件对象.close()方法方法close()方法刷新缓冲区中还没写入文件的信息存放到文件并关闭该文件。当一个文件对象的引用被重新指定给另一个文件时,会关闭之前的文件。文件操作文件操作第第9 9章章 信息信息永久保存:文件操作永久保存:文件操作0101写写 入入 方方 法法1.写入字符串:文件对象写入字符串:文件对象.write(字符串字符串,encoding=utf-8)

9、2.写入序列:写入序列:文件对象.writelines(序列)1.写入字符串:写入字符串:文件对象.write(字符串,encoding=utf-8)write()方法可将任何字符串(包括二进制数据)写入一个打开的文件,该方法不在字符串的结尾添加换行符(n)。例如(ch9,writeFile.py):fo=open(FileTest1.txt,w+)#打开一个文件fo.write(Test 1 Line n)fo.write(Test 2 Line)print(name属性:,fo.name)#name属性:FileTest1.txtfo.close()#关闭打开的文件运行结果,在当前目录下用

10、记事本打开FileTest1.txt,内容如图8.1所示。2.写入序列:文件对象写入序列:文件对象.writelines(序列序列)writelines()把序列的内容多行一次性写入文件,不会在每行后面加上任何内容。例如:fo=open(FileTest2.txt,w+)list1=one ,two ,three fo.writelines(list1)fo.close()0202读取操作方法读取操作方法1读取指定个数(字节)字符串:读取指定个数(字节)字符串:文件.read(个数)2读取一行:读取一行:文件对象.readiine(个数)3读取到列表:读取到列表:文件对象.readlines(

11、长度)1读取指定个数(字节)字符串:读取指定个数(字节)字符串:文件.read(个数)read()方法从一个打开的文件中开头开始读取一个字符串(或者二进制数据),参数是要从已打开文件中读取的字节计数。如果没有“个数”参数它会尝试尽可能多地读取更多的内容,直到文件的末尾。例如:fo=open(FileTest2.txt,r+)str1=fo.read(20)print(str1)#one two threefo.close()2读取一行:读取一行:文件对象.readiine(个数)readline()会从文件中读取单独的一行,换行符为n。如果返回一个空字符串,说明已经读取到最后一行。如果包括“个

12、数”参数,则读取一行中的指定个数的部分。例如:fo=open(FileTest1.txt,r+)str1=fo.readline()str2=fo.readline()print(str1)#Test 1 Lineprint(str2)#Test 2 Linefo.close()3读取到列表:读取到列表:文件对象.readlines(长度)readlines()将返回该文件中包含的所有行,并把文件每一行作为一个list的一个成员,并返回这个list。如果提供“长度”参数,表示读取内容的总长,也就是说可能只读到文件的一部分。例如:fo=open(FileTest1.txt,r+)list1=fo

13、.readlines()print(list1)#Test 1 Line n,Test 2 Line fo.close()0303读取操作方法读取操作方法1.获取当前位置:获取当前位置:tell()2.文件定位方法:文件定位方法:seek(字节数,参考位置)定位与定位与移动移动1.获取当前位置:获取当前位置:tell()tell()方法给出文件的当前位置(字节数),下一次的读写会从该位置开始。2.文件定位方法:文件定位方法:seek(字节数,参考位置)按照“参考位置”,将文件当前文件位置移动“字节数”。如果参考位置=0,使用文件的开头作为参考位置;如果参考位置=1,使用当前的位置作为参考位置;

14、如果参考位置=2,使用文件的末尾作为参考位置。定位与定位与移动移动例如(ch8,fileSeek.py):fo=open(FileTest3.txt,wb+)#(1)fo.write(bytes(01是二进制符号n,encoding=utf-8)(2)fo.write(bytes(01234567是八进制符号n,encoding=utf-8)fo.write(bytes(0123456789abcdef是十六进制符号n,encoding=utf-8)fo.seek(0,0)#(3)print(fo.readline(),fo.tell()#(4)print(fo.readline(),fo.t

15、ell()print(fo.readline(),fo.tell()fo.seek(-38,2)#(5)print(fo.readline(),fo.tell()fo.close()运行结果:0404文文 件件 设设 备备文件设备文件设备 通常把显示器定义为标准输出文件,文件名为sys.stdout,一般情况下在屏幕上显示有关信息就是向标准输出文件输出。如前面经常使用的print函数就是这类输出。键盘通常被指定为标准输入文件,文件名为sys.stdin,从键盘上输入就意味着从标准输入文件上输入数据。input函数就属于这类输入。标准错误输出也是标准设备文件,文件名为sys.stderr。例如(

16、ch8,fileDev.py):import syssys.stdout.write(输入字符串:n)#相当于print(输入字符串:n)str1=sys.stdin.readline()#相当于str1=input()sys.stdout.write(输入字符串为:+str1)#print(输入字符串为:+str1)运行结果:0505上下文管理语句上下文管理语句上下文管理语句上下文管理语句with用于文件内容读写时,可以采用with open(filename,mode,encoding)as 文件对象:然后通过文件对象读写文件内容。例如(ch8,with.py):with open(E:p

17、ythonFileTest4.txt,wb+)as myf:myf.write(bytes(with Testn,encoding=utf-8)myf.seek(0,0)print(myf.readline(),myf.tell()myf.close()pass其中:由于采用的with关键词,即使在程序运行过程中出现了,myf对应的文件总会被关闭。使用with关键字是非常好的方式,比try-finally语句块要简单,有些情况还可以进一步简化了代码的编写。例如:with open(FileTest3.txt,r,encoding=utf-8)as src,open(FileTest3.bak,

18、w,encoding=utf-8)as dst:dst.write(src.read()序列化和反序列化序列化和反序列化第第9 9章章 信息信息永久保存:文件操作永久保存:文件操作序列化和反序列化序列化和反序列化通过pickle模块的反序列化操作,能够从文件中创建上一次程序保存的对象。基本接口:pickle.dump(obj,文件对象 ,protocol)通过pickle,对文件对象以读取的形式打开:x=pickle.load(文件对象)。从文件对象中读取一个字符串,并将它重构为原来的Python对象。使用pickle模块将数据对象保存到文件。代码如下(ch8,pickle.py):impor

19、t pickle,pprintfpick=open(FileTest5.pkl,wb+)dict1=1:one ,2:two,3:three list1=-23,5.0,python,12.8e+6pickle.dump(dict1,fpick)#Pickle字典使用默认的0协议pickle.dump(list1,fpick,-1)#Pickle列表使用最高可用协议fpick.seek(0,0)dict1=pickle.load(fpick)#反序列化对象到dict1list1=pickle.load(fpick)#反序列化对象到list1pprint.pprint(dict1)#输出数据对象

20、dict1pprint.pprint(list1)#输出数据对象list1fpick.close()#关闭保存的文件运行结果:文件和文件夹的操作文件和文件夹的操作第第9 9章章 信息信息永久保存:文件操作永久保存:文件操作0101文文 件件 操操 作作1.复制复制文件方法:文件方法:shutil.copyfiiie(原文件,新文件)2.重命名文件方法:重命名文件方法:os.rename(原文件,新文件)3.删除删除文件方法:文件方法:os.remove(文件)文件操作文件操作1复制文件方法:复制文件方法:shutil.copyfiiie(原文件,新文件)Python的shutil模块提供了执行

21、文件或目录操作的方法。要使用这个模块,必须先导入它,然后可以调用相关的各种功能。例如:import shutilshutil.copyfile(FileTest3.txt,FileTest3.bak)#复制文件2.重命名文件方法:重命名文件方法:os.rename(原文件,新文件)Python的os模块提供了帮助执行文件处理操作的方法,比如重命名和删除文件。例如:import osos.rename(FileTest3.bak,FileTest3.tmp)3删除文件方法:删除文件方法:os.remove(文件)例如:import osos.remove(FileTest3.tmp)0202目目

22、 录录 操操 作作1创建新的目录:创建新的目录:os.mkdir(“新目录”)方法2改变当前的目录:改变当前的目录:os.chdir(“目录”)方法3获得当前目录:获得当前目录:os.getcwd()方法方法4参数指定目录:参数指定目录:os.rmdir(“目录”)方法,shutil.rmtree(“目录”)5.文件的状态信息文件的状态信息目录操作目录操作1创建新的目录:创建新的目录:os.mkdir(“新目录”)方法用户可以使用os模块的mkdir()方法在当前目录下创建新的目录。用户需要提供一个包含了要创建的目录名称的参数。例如:import os;os.mkdir(mytest)#在当前

23、目录下创建子目录cmytest2改变当前的目录:改变当前的目录:os.chdir(“目录”)方法用户可以用chdir()方法来改变当前的目录。3获得当前目录:获得当前目录:os.getcwd()方法方法getcwd()方法获得当前的工作的工作目录。例如:import osos.chdir(G:Python实用教程ch8mytest)#修改当前目录print(os.getcwd()#G:Python实用教程ch8mytest目录操作目录操作4参数指定目录:参数指定目录:os.rmdir(“目录”)方法,shutil.rmtree(“目录”)rmdir()方法删除目录,目录名称以参数传递。在删除这个目录前,目录应该是空的。但shutil.rmtree()方法删除目录前可以是不空的,会删除目录及目录下的所有内容。5.文件的状态信息文件的状态信息os.stat属性包含文件的状态信息,文件的状态信息很多,其中os.stat.st_ctime是文件创建时间。例如(ch8,fileState.py):import os,time#得到文件的状态fState=os.stat(re:python第01章 Python,掀起您的盖头来.doc)print(fState)#显示文件创建的时间print(time.localtime(fState.st_ctime)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python实用案例教程-第9章-文件操作课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|