《Python语言程序设计》 课件 第11章 文件操作_第1页
《Python语言程序设计》 课件 第11章 文件操作_第2页
《Python语言程序设计》 课件 第11章 文件操作_第3页
《Python语言程序设计》 课件 第11章 文件操作_第4页
《Python语言程序设计》 课件 第11章 文件操作_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章文件操作第11章

文件操作文件的基本概念文件读、写方法1.文件的概念

文件是一组用文件名标识的数据集合,存储在外部介质(如磁盘)上。

根据存储格式不同,分为:文本文件和二进制文件文本文件:由字符组成,按ASCII码、UTF-8或Unicode等编码,可以通过文本编辑器进行编辑,占用存储空间较多,且需要花费时间进行转换(二进制形式与ASCII码间的转换)。二进制文件:将内存中的数据按照其在内存中的存储形式原样输出到磁盘上进行存储。典型的二进制文件包括数据库文件、图像文件、可执行文件等。不能看作是字符串,只能当作字节流。11.1文件的概念2.文件操作

首先打开文件,并创建文件对象,

然后通过该文件对象对文件内容进行读写,

最后关闭文件。

读(read):从文件中取数据,输入到内存。

写(write):将内存数据输出到磁盘文件。11.2文件的打开与关闭11.2.1打开文件

在程序和操作系统之间建立起联系,把文件的一些信息通知给操作系统。1.open()函数

返回一个文件对象,对文件进行各种操作。文件对象=open(“文件名”[,“打开方式”][,缓冲区])文件名:可以包含盘符、路径,是一个字符串。

表示路径时,使用"\\"、"/"或"//"打开方式:读写方式,默认是只读。缓冲区:是否使用缓冲存储。0表示不使用缓冲存储;-1或>=1表示使用缓冲存储(默认)。打开方式:”r”:只读,文件不存在时返回异常”w”:覆盖写,文件不存在则创建,存在则完全覆盖“x":创建写,文件不存在则创建,存在则返回异常”a”:追加写,文件不存在则创建,存在则在文件最后追加内容“r+”、“w+”、“a+”:原功能基础上增加读写功能"rb"、"wb"、"xb"、"ab":二进制文件的读写模式open("test.txt","r")open("test.txt")

open("test.txt","w")2.文件对象属性引用方法:文件对象名.属性属性:name:返回文件的名字

mode:返回文件的打开方式

closed:若文件被关闭返回True,否则返回Falsefo=open("file.txt","wb")print("Nameofthefile:",)print("Closedornot:",fo.closed)print("Openingmode:",fo.mode)程序运行结果如下:Nameofthefile:file.txtClosedornot:FalseOpeningmode:wb3.文件对象方法11.2.2关闭文件

当对文件内容操作完成后,需要关闭文件,才能正确保存文件并释放资源供其它程序使用。close()方法关闭文件,其调用格式为:文件对象.close()

fo=open("file.txt","wb")print("Nameofthefile:",)fo.close()11.3文本文件的操作11.3.1文本文件的读取1.read()方法

变量=文件对象.read()

读取从当前位置直到文件末尾的内容,并作为字符串返回,赋给变量。如果是刚打开的文件对象,则读取整个文件。

可以带有参数:变量=文件对象.read(size)

读取从文件当前位置开始的size个字符,并作为字符串返回,赋给变量。(1)如果文件结束,就读取到文件结束为止。(2)如果size大于文件从当前位置到末尾的字符数,则仅返回这些字符。例10-1文本文件file.txt里的内容:Pythonisveryuseful.ProgramminginPythonisveryeasy.统计字母a的次数。分析:先读取文件的全部内容,得到一个字符串,然后遍历字符串,统计字母a的个数。infile=open(“file.txt","r")s=infile.read()print(s)n=0forcins:ifcin'a':n+=1print(n)infile.close()程序运行结果:Pythonisverynice.ProgramminginPythonisveryeasy.(空一行)22.readline()方法

变量=文件对象.readline()

读取从当前位置到行末(即下一个换行符)的所有字符,并作为字符串返回给变量。通常用此方法来读取文件的当前行,包括行结束符。如果当前处于文件末尾,则返回空串。>>>file=open(“file.txt”,“r”)>>>content=fo.readline()>>>print(content)Pythonisverynice.>>>content=fo.readline()>>>print(content)ProgramminginPythonisveryeasy.>>>content=fo.readline()#输出’’【例

11-2】已经建立文本文件

file.txt,统计文件中字母

a出现的次数,用

readline()函数实现。file=open("file.txt","r")#读取文件s=file.readline()#读取一行n=0whiles!='':#若没有读取完则继续循环 print(s[:-1])#显示文件内容 forcins:#遍历读取字符串 ifcin'a':n+=1 s=file.readline()#读取下一行print(n)file.close()#关闭文件程序运行结果:Pythonisverynice.ProgramminginPythonisveryeasy.23.readlines()方法

变量=文件对象.readlines()

读取从当前位置直到文件末尾的所有行,并将这些行构成列表返回,赋给变量。列表中的元素即每一行构成的字符串。如果当前处于文件末尾,则返回空列表。file=open("d:\\file.txt","r")list=file.readlines()print(list)file.close()['Pythonisverynice.\n','ProgramminginPythonisveryeasy.\n']输出结果:

【例

11-3】已经建立文本文件

file.txt,统计文件中字母

a出现的次数。用

readlines()方法实现。file=open("d:\\file.txt","r")#打开文件,准备读取list=file.readlines()#读取各行,并存到列表n=0forsinlist:#遍历列表print(s[:-1])#显示文件内容forcins:#遍历列表的字符串元素ifcin'a':n+=1print(n)file.close()#关闭文件11.3.2文本文件的写入1.write()方法

文件对象.write(字符串)在文件当前位置写入字符串,并返回字符的个数。Write方法执行完后并不换行!【例

11-4】从键盘输入若干字符串,逐个将它们写入

file1.txt中,知道输入“*”时结束。然后从该文件中逐个读出字符串,并在屏幕上显示出来。

file=open(“d:\\file1.txt”,“w”)#打开文件,准备建立文本文件print("输入多行字符串(输入'*'结束):")s=input()#从键盘输入一个字符串whiles!=“*”:#不断输入,直到输入结束标志file.write(s+‘\n‘)#将字符串写入文件s=input()#从键盘输入一个字符串file.close()file=open(“d:\\file1.txt”,“r”)#打开文件,准备读取s=file.read()print("输出文本文件:")print(s.strip())2.writelines()方法文件对象.writelines(字符串元素的列表)在文件当前位置处依次写入列表中的所有字符串。(1)列表类型的各字符串元素连接起来写入文件中(2)写入文件不会含引号(3)不会自动加入换行符file=open("file2.dat","w")file.writelines(["Python语言","Python程序\n","Python程序设计"])file.close()【例

11-5】从键盘输入若干字符串,逐个将它们写入

file1.txt的尾部,直到输入“*”时结束。然后从该文件中逐个读出字符串,并在屏幕上显示出来。print("输入多行字符串(输入“*”结束)")list=[]whileTrue:

s=input()ifs=="*":breaklist.append(s+"\n")file=open("d:\\file1.txt","a")file.writelines(list)file.close()file=open("d:\\file1.txt","r")s=file.read()print("输出文本文件:")print(s.strip())有以下程序代码,输出结果是_______。f1=open('d:\\a1.txt','w')f1.write("1")f1.write('2')f1.close()f1=open('d:\\a1.txt','r')s=f1.readline()print(s)12有以下程序代码,输出结果是_______。f1=open('d:\\a1.txt','w')list=['a','b\n','c','d']f1.writelines(list)f1.close()f1=open('d:\\a1.txt','r')s=f1.readline()print(s)ab已经建立文本文件data.txt,文件中的内容为:WelcometoNanchang,下面代码执行后的结果为_____________。infile=open("data.txt","r")#打开文件,准备输出文本文件

ls=infile.readlines()#读取各行,得到一个列表

n=0

forsinls:#遍历列表

print(s[:-1])#显示文件内容

forcins:#遍历列表的字符串元素

ifcin'aeiouAEIOU':n+=1

print(n)

infile.close()61.tell()方法格式:

文件对象.tell()

功能:返回文件的当前位置,即相对于文件开始位置的字节数,下一个读取或写入操作将发生在当前位置。例如:>>>fo=open("data.txt","r")>>>fo.tell()0>>>content=file.read(6)>>>num=file.tell()611.4.1文件的定位11.4二进制文件的操作2.seek()方法:更改当前的文件位置。文件对象.seek(偏移[,参考点])偏移:移动的字节数

正数向文件尾移动,负数向文件头移动参考点:当前文件的位置

0表示文件头部,默认值为0

1表示当前位置

2表示文件末尾file=open("d:\\file.txt","rb")distance=file.seek(6,0)print(distance)content=file.read()print(content)运行结果6b'isverynice.\r\nProgramminginPythonisveryeasy.\r\n'11.4.2二进制文件的读写二进制文件的读/写操作可以用文件对象read()和write()方法。例11-6s=input('输入一个字符串:')s=s.encode()#变成字节数据file=open('file2.txt',"wb")#建立二进制文件file.write(s)file.close()file=open('file2.txt','rb')#读二进制文件list=[]forninrange(1,len(s)+1):file.seek(-n,2)#文件定位从最后一个字符到以一个字符s=file.read(1)#读一个字节s=chr(ord(s.decode())^24)#加密处理list,append(s)list=''.join(list)#将序列元素组合成字符串print(list)file.close()2.struct模板用字符串类型来存储二进制数据。pack()函数:把整型(或浮点型)打包成二进制的字符串。字符串=struct.pack(‘包装类型’,包装数据)>>>importstruct>>>a=65>>>bytes=struct.pack('i',a)>>>print(bytes)b’A\x00\x00\x00’解包元组=struct.unpack(‘解包类型’,解包数据)unpack()函数:将字节数据转换成整型(或浮点型)>>>file=open("file3.txt","rb")>>>bytes=file.read(4)>>>a=struct.unpack('i',bytes)>>>print(a)(65,)注意,unpack()函数执行后得到的结果是一个元组。3.pickle模块用于Python的对象(包括内置类型和自定义类型)直接写入到文件中,而不需要先把它们转化为字符串再保存,也不需要底层的文件访问操作把它们写入到一个二进制文件里。2个常用的函数:dump()函数pickle.dump(数据,文件对象)load()函数变量=pickle.load(文件对象)importpickleinfo={'one'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论