




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python数据分析与实践12023/10/28第7章文件操作本章学习目标•Python打开文件的方法•Python打开文件的各种模式•Python读写文件的模式•用Python构建文本对话框32023/10/287.1.1打开文件
Python提供了内置的open()方法用于打开文件,用户可以使用help()方法查看open()的一些属性:In[1]:help(open)Out[1]:Helponbuilt-infunctionopeninmoduleio:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)Openfileandreturnastream.RaiseIOErroruponfailure. 42023/10/287.1.1打开文件下面对open()的参数进行解释:file:文件所在的路径。mode:指文件的读取形式,文件的读取模式有很多,如表所示:模式描述r打开一个文件为只读模式,文件指针位于改文件的开头。这是默认模式。rb打开一个文件,智能以二进制格式读取,文件指针位于改文件的卡头。r+打开用于读取和写入的文件,文件指针位于文件的开头。rb+打开用于读取和写入二进制格式的文件,文件指针在文件的开头。w打开一个文件,只写,如果该文件存在,则覆盖该文件,如果文件不存在,则在该路劲下创建一个新的文件,用于写入。wb打开一个文件,只能以二进制格式写入,如果该文件存在,则覆盖该文件,如果该文件不存在,则在该路径下创建一个新文件,用于写入。52023/10/287.1.1打开文件w+打开用于写入和读取的文件,如果该文件存在,则覆盖该文件,如果该文件不存在,则在该路径下创建一个新文件,用于写入。wb+打开用于写入和读取的二进制格式文件,如果该文件存在,则覆盖该文件,如果该文件不存在,则在该路径下创建一个新文件,用于写入。a打开文件,文件指针在该文件的末尾,也就是说,该文件处于追加模式。如果该文件不存在,则在该路径下创建一个新文件,用于写入。ab打开一个二进制格式文件,文件指针在该文件的末尾,也就是说,该文件处于追加模式。如果该文件不存在,则在该路径下创建一个新文件,用于写入。a+打开一个追加和读取的文件,文件指针在该文件的末尾,该文件为追加模式;如果该文件不存在,则在该路径下创建一个新文件,用于读取和写入。ab+打开一个追加和读取的二进制文件,文件指针在该文件的末尾,该文件为追加模式;如果该文件不存在,则在该路径下创建一个新文件,用于读取和写入。b以二进制的形式打开文件。62023/10/287.1.1打开文件
buffering:如果buffering的值被设为0,就不会有寄存;如果buffering的值去1,访问文件时会寄存;如果将buffering的值设为大于1的整数,表明这就是寄存区的缓冲大小;如果去负值,寄存区的缓冲大小为系统默认。Encoding:编码方式,默认为None。72023/10/287.1.1打开文件
当文件被打开后会有一个file对象,可以通过该对象得到关于该文件的各种信息,例如:file=open(filepath,‘w+’)下表列出了和file对象相关的所有属性:属性描述file.closed返回True表示文件已关闭,返回False表示文件未关闭。file.mode返回被打开的的文件的访问模式。返回文件的名称。file.softspace如果用print输出后,必须跟一个空格符,则返回False,否则返回True。82023/10/287.1.2关闭文件File对象的close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,在这之后便不能在对文件进行写入操作了。当一个文件对象的引用被重新指定给另一个文件时,python会关闭之前的文件。用close()方法关闭文件是一个很好的习惯。代码形式如下:file.close()92023/10/287.2.1从文件读取数据
file对象提供了三个读文件的方法:read()、readline()和readlines()。每种方法都可以接受一个变量,以限制每次读取的数据量,但他们通常不使用变量。read()每次读取整个文件,它通常用于将一个文件内容放入到一个字符串变量中。然而,当read()读取的文件内容大于可用内存时,则不可能接受这种处理。readline()和readlines()之间的差别在于后者是一次性读取整个文件,向read()一样,readlines()自动将文件内容分析成一个行的列表,该列表可以由python的for…in…结构进行处理;另一方面,readline()每次只读取一行,通常比readlines()慢很多。102023/10/287.2.1从文件读取数据下表给出file对象读取方法和描述:方法描述file.read([size])Size表示读取的长度,单位为字节,读取整个文件file.readline([size])读取一行,没操作一次读取一行,读取长度为size,若size的大小小于这一行的长度,则返回这一行的部分。file.readlines([size])把文件的每一行作为list的一个成员,读取后,返回一个list,读取的行数为size,若size小于文件总行数,则返回文件部分行。112023/10/287.2.1从文件读取数据当读取的文件很大时,常常使用fileinput模块:importfileinputforlineinfileinput.input(file_path):print(line)也可以直接使用for循环:f=open(file_path)forlineinf.readlines():print(line)122023/10/287.2.1从文件读取数据还可以使用列表解析式:[lineforlineinopen(file_path).readlines()]
在使用open方法打开文件后,一定要记得调用close()方法关闭文件。比如,可以用try-finally语句来确保最后能关闭文件,比如:f=open(file_path)try:forlineinf.readlines():print(line)finally:f.close()注意:不能讲open()方法放在try里面,因为当打开文件出现异常时,文件对象就无法指向close()操作。132023/10/287.2.2向文件写入数据write():write()方法可以将任何字符串写入一个打开的文件中。需要注意的是,python字符串可以是二进制数据,而不仅仅是文字,write()方法不会再字符串结尾添加换行符(’\n’)。writelines():writelines()也可以将内容写入到打开的文件中,但是,同write()方法一样,writelines()也只是机械的写入,不会在每行后面添加任何东西。7.3.1基于win32ui构建文件对话框win32ui模块:从名字上看,该模块是对Windows系统进行文件对话框操作的,该模块里面的CreatFileDialog()方法可以很方便快捷的的用于创建打开的对话框,代码展示如下:importwin32uidlg=win32ui.CreateFileDialog(1)#1表示打开文件对话框dlg.SetOFNInitialDir("D:\\python")#设置打开文件对话框中的初始显示目录dlg.DoModal()
filename=dlg.GetPathName()#获取选择的文件名称print(filename)7.3.1基于win32ui构建文件对话框结果如图:7.3.1基于win32ui构建文件对话框关于CreateFileDialog()文本对话框有几种内置方法,他们的说明如表方法功能GetPathName()获取路径名称GetFileName()获取文件名称GetFileExt()获取文件扩展名GetFileTitle()获取文件标题GetPathNames()从文件对话框中获取路径名称列表GrtReadOnlyPref()获取只读文件SetOFNTitle()设置对话框命名SetOFNInitialDir()设置对话框的初始文件夹DoModal()为对话框创建一个模式窗口EndDialog()关闭一个模式对话7.3.1基于win32ui构建文件对话框
这个打开文件对话框界面还是很友好的,也是Windows本地风格的,但是,它的缺点同样也很明显,那就是该模块支队Windows系统有效。所以,当对别的系统进行打开或创建文件对话框的操作时,需要用到tkFileDialog模块。7.3.2基于tkFileDialog构建文件对话框
tkFileDialog的功能和win32ui差不多,都是用于对文件对话框的操作,它的代码也很简单,代码展示如下:importtkFileDialogfilename=tkFileDialog.askopenfilename(initialdir='E:/Python')print(filename)得到的效果和win32ui是一样的。7.3.2基于tkFileDialog构建文件对话框表列出了tkFileDialog的几种常用方法和介绍:方法功能askopenfile(mode=‘r’,**options)打开一个文本对话框,返回一个杜文本对象;若需要返回多个文本对象,使用askopenfiles(mode=‘r’,**options),将以列表形式返回文件对象。askopenfilename(**options)获取文件路径名称,若要获取多个文件路径名称,使用askopenfilenames(**options),将以元组形式返回文件路径和名称。asksaveasfile(mode=‘w’,**options)打开文本对话框,返回一个写文本对象asksaveasfilename()获取需保存文件的路径和名称askdirectory()选择一个文件夹7.4应用实例:文本文件操作
[例]使用模块random中的randint()方法生成1~122的随机数,以产生字符对应的ASCII码,然后将满足一下条件(大写字母、小写字母、数字和一些特殊符号如“\n”、“\r”、“*”、“&”、“^”、“$”)的字符逐一写进test.txt中,当光标达到10001时停止写入。7.4应用实例:文本文件操作程序代码如下:importrandomwithopen('F:\\pythonbook\\chapter7\\test.txt','w')asf:while1:i=random.randint(1,122)x=chr(i)ifx.isupper()orx.islower()\orx.isdigit()orxin['\n','\r','*','&','^','$']:f.write(x)iff.tell()>10000:break7.4应用实例:文本文件操作
运行该文件后,会在F盘pythonbook文件夹下的chapter7目录产生一个text.txt文件,文件中也会写我们想要的内容,如图:7.4应用实例:文本文件操作7.4应用实例:文本文件操作
[例]将test.txt文件中的所有小写字母转换成大写字母,然后保存到test_copy.txt文件中。。分析:先以w模式创建一个空白的文本文件test_copy.txt,然后将test.txt文件中的小写字母全部转换成大写字母,再写入test_copy.txt文件中。7.4应用实例:文本文件操作程序代码如下:f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 俯卧式学习体验中AR技术的创新应用与效果评估
- 医疗培训课程中的动力机制探索
- 构建教育机器人伦理框架的实践与思考
- 智能黑板与交互式教学技术的融合
- 2025年四川省遂宁市船山区二中物理高一第二学期期末学业水平测试试题含解析
- 打破边界偏远区域教育技术新趋势研究
- 2025届广东省惠来一中物理高一下期末统考模拟试题含解析
- 校园心理环境建设与学生潜能开发
- 中职教程课件
- 智慧医疗中教育技术的应用与发展趋势
- GB/T 2550-2016气体焊接设备焊接、切割和类似作业用橡胶软管
- GB/T 1591-2018低合金高强度结构钢
- GB/T 14335-2008化学纤维短纤维线密度试验方法
- JJG 1186-2022 直流电能表检定装置检定规程
- ISO9001:2015中英文对照版
- 单招英语词汇表
- 置业顾问基础知识培训(最新版)
- 初中英语单元整体教学讲座课件
- 国家开放大学《老年用药基本知识》形考任务1参考答案
- m6A甲基化研究方法
- 医院智能化弱电设计方案
评论
0/150
提交评论