




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python文件文件的概念文件是存储在外部介质上的用文件名标识的数据集合。访问存放在外部介质上的数据,先按文件名找到所指定的文件,再从该文件中读取数据。要向外部介质存储数据,必须先建立一个文件,才能向它写入数据。文件操作是一种基本的输入/输出方式,在实际问题求解过程中经常碰到。数据以文件的形式进行存储,操作系统以文件为单位对数据进行管理,文件系统仍是高级语言普遍采用的数据管理方式。文件格式存储形式:磁盘文件外部设备:标准输入/输出文件数据的组织形式:(按编码形式分)文本文件:只包含基本文本字符,不包括格式二进制文件:需要相应程序才能打开,如word、pdf等文件操作1)打开文件并创建文件对象:open2)对象对文件内容进行读/写操作:读(read)操作:从文件中取出数据,再输入到计算机内存;写(write)操作:向文件写入数据,将内存数据输出到文件。3)关闭文件:close打开/关闭文件fo=open(文件名[,打开方式])fo.close()r:从文件向内存输入数据,文件必须存在的w:从内存向文件写数据,文件不存在则新建,文件存在则覆盖。a:向已有文件追加数据,不存在则新建。r+,w+,a+:可以写入和读取文件对象属性文件属性的引用方法为:文件对象名.属性名文件对象属性fo=open("file.txt","wb")print("Nameofthefile:",)print("Closedornot:",fo.closed)print("Openingmode:",fo.mode)fo.close()程序运行结果如下:Nameofthefile:file.txtClosedornot:FalseOpeningmode:wb文件对象方法文本文件的读取1.read()方法:默认读出全部内容,读取结果为字符串
变量=文件对象.read([count])注:count是字节数量,表示一次读count个字节2.readline()方法:读一行,读取结果为字符串变量=文件对象.readline()3.readlines()方法:读出所有行,以列表形式存放,一行存放为一个元素变量=文件对象.readlines()例6.1已经建立文本文件data.txt,统计文件中英文元音字母出现的次数。分析:先读取文件的全部内容,得到一个字符串,然后遍历字符串,统计元音字母的个数。infile=open("data.txt","r")#打开文件,准备输出文本文件s=infile.read() #读取文件全部字符print(s) #显示文件内容n=0forcins: #遍历读取的字符串
ifcin'aeiouAEIOU’:n+=1print(n)infile.close() #关闭文件例6.2已经建立文本文件data.txt,统计文件中英文元音字母出现的次数。用readline()方法实现。分析:逐行读取文件,得到一个字符串,然后遍历字符申,统计元音字母的个数。当文件读取完毕,得到一个空串,控制循环结束。infile=open("data.txt","r")#打开文件,准备输出文本文件s=infile.readline() #读取一行n=0whiles!='': #没有读完时继续循环
print(s[:-1]) #显示文件内容
forcins: #遍历读取的字符串
ifcin'aeiouAEIOU':n+=1s=infile.readline() #读取下一行print(n)infile.close() #关闭文件例6.3已经建立文本文件data.txt,统计文件中元音字母出现的次数。用readlines方法实现。分析:读取文件所有行,得到一个字符串列表,然后遍历列表,统计元音字母的个数。infile=open("data.txt","r")#打开文件,准备输出文本文件ls=infile.readlines() #读取所有行,得到一个列表n=0forsinls: #遍历列表
print(s[:-1]) #显示文件内容
forcins: #遍历读取的字符串
ifcin'aeiouAEIOU':n+=1print(n)infile.close() #关闭文件文本文件的写入1.write()方法文件对象.write(字符串)例6.4从键盘输入若干字符串,逐个将它们写入文件data1.txt中,直到输入“*”时结束。然后从该文件中逐个读出字符串,并在屏幕上显示出来。分析:输入一个字符串,如果不等于“*”则写入文件,然后再输入一个字符串,进行循环判断,直到输入“*”结束循环。fo=open("datal.txt","w") #打开文件,准备建立文本文件print("输入多行字符串(输入“*”结束):")s=input("一次输入一个串,如果只输入*结束:") #从键盘输入一个字符串whiles!="*": #不断输入,直到输入结束标志“*”
fo.write(s+"\n") #向文件写入一个字符串
s=input("再次输入一个字符串:")#从键盘输入一个字符串fo.close()fo=open("datal.txt","r") #打开文件,准备读取文本文件s=fo.read()print("输出文本文件:")print(s.strip())fo.close()文本文件的写入2.writelines()方法文件对象.writelines(字符串元素的列表)例6.5从键盘输入若干字符串,逐个将它们写入文件data1.txt的尾部,直到输入“*”时结束。然后从该文件中逐个读出字符串,并在屏幕上显示出来。分析:首先以“a”方式打开文件,当前位置定位在文件末尾,可以继续写入文本而不改变原有的文件内容。本例考虑先输入若干个字符串,并将字符串存入一个列表中,然后通过writelines()方法将全部字符串写入文件。print("输入多行字符串(输入“*”结束):")lst=[]whileTrue: #不断输入,直到输入“*”结束标志
s=input() #从键盘输入一个字符串
ifs=="*":breaklst.append(s+"\n") #将字符串加到列表末尾fo=open("data1.txt","a") #打开文件,准备追加文本文件fo.writelines(lst) #向文件写入一个字符串fo.close()fo=open("data1.txt","r") #打开文件,准备读取文本文件s=fo.read()print("输出文本文件:")print(s.strip())文件操作应用举例例6.6有两个文件f1.txt和f2.txt,各存放一行已经按升序排列的英文字母,将两个文件中的内容合并,要求合并后依然按字母升序排列,并输出到一个新文件f.txt中去。分析:分别从两个有序的文件读出一个字符,将ASCII值小的字符写到f.txt文件,直到其中一个文件结束而终止。然后将未结束文件中的剩余数据复制到f.txt文件,直到该文件结束而终止。程序如下:defftcomb(fname1,fname2,fname3):#文件合并
fo1=open(fname1,"r")fo2=open(fname2,"r")fo3=open(fname3,"w")c1=fo1.read(1)c2=fo2.read(1)whilec1!=""andc2!="":ifc1<c2:fo3.write(c1)c1=fo1.read(1)elifc1==c2:fo3.write(c1)c1=fo1.read(1)fo3.write(c2)c2=fo2.read(1)else:fo3.write(c2)c2=fo2.read(1)whilec1!="": #文件1复制未结束
fo3.write(c1)c1=fol.read(1)whilec2!="": #文件2复制未结束
fo3.write(c2)c2=fo2.read(1)fo1.close()fo2.close()fo3.close()defftshow(fname): #输出文本文件
fo=open(fname,"r")s=fo.read()print(s.replace("\n",""))#去掉字符串中的换行符后输出
fo.close()defmain():ftcomb("f1.txt","f2.txt","f.txt")ftshow("f.txt")main()文件操作应用举例例6.7根据考试成绩,统计学科等级水平。分析:某学校对学生的附加科目进行能力测试,并按以下标准统计学科等级水平:(1)生物和科学两门课都达到60分,总分达到180分为及格。(2)每门课达到85分,总分达到260分为优秀。(3)总分不到180分或有任意一门课不到60分,为不及格。文件操作应用举例设学生成绩原始数据存储在score.txt文件中,每项数据用一个空格分隔,文件中没有表头,只有学生的信息。具体数据如表6-4所示。编程要求:从score.txt文件中读取学生成绩数据,判定等级并写入level.txt文件中。程序实现方案一:(1)读取文件score.txt数据到列表L中列表L中的数据项对应着文件中的每条学生记录,通过循环语句遍历L,提取需要的学号和三门课的成绩,并存放在列表x中。(2)判定学科等级列表x包含4个数据项,x[0]为学号,x[1]、x[2]和x[3]分别为“语数”、“生物”、“科学”三门课的成绩,需要转换为整数类型以便进行求和等数值运算,最后通过分支语句,将求得的等级结果存放在key变量中。(3)将学号和等级结果按一定格式写入文件level.txt中程序如下:L=list(open('score.txt','r'))f=open('level.txt','w')forsinL:x=s.split() #根据空格分隔每个数据
sum=0foriinrange(1,len(x)):x[i]=int(x[i])sum+=x[i]ifx[1]>=85andx[2]>=85andx[3]>=85andsum>=260:key='优秀'elifx[2]>=60andx[3]>=60andsum>=180:key='及格'else:key='不及格'f.write('%s\t%s\n'%(x[0],key))f.close()例6.8在number.dat文件中放有若干个不小于2的正整数(数据间以逗号分隔)编写程序实现:(1)在prime()函数中判断和统计这些整数中的素数以及个数。(2)在主函数中将number.dat中的全部素数以及素数个数输出到屏幕上。程序如下:defprime(a,n): #判断列表a中的n个元素是否为素数
k=0foriinrange(0,n):
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肋骨骨折健康教育
- 学生素质养成教育动员大会
- 2025五指山市黎母山镇社区工作者考试真题
- 2025双鸭山市尖山区窑地街道社区工作者考试真题
- 2025台州市椒江区下陈街道社区工作者考试真题
- 小朋友学拼音课件
- 肿瘤的姑息治疗及护理
- 学生年终总结
- 中学生防触电安全教育
- 德国思想政治教育内容与途径
- 固体化学导论全套课件
- 2025山西杏花村旅游开发有限公司招聘50人笔试参考题库附带答案详解
- 正式展会合同协议
- 工程甩项合同协议
- 费用开支标准管理制度
- 期中模拟卷(新疆专用)-2024-2025学年八年级英语下学期核心素养素质调研模拟练习试题(考试版)A4
- 甲状旁腺切除术后的护理措施
- 2024慢性鼻窦炎诊断和治疗指南解读课件
- (T8联考)2025届高三部分重点中学3月联合测评生物试卷(含答案详解)河北版
- 员工入职申请表(完整版)
- T-GDEIIA 56-2024 垂直起降低空航空器起降场基础设施配置技术要求
评论
0/150
提交评论