版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Python程序设计基础及应用》配套课件第八章
文件和目录8.1文件处理流程8.2文本文件读写8.4CSV和JSON文件读写8.5文件操作8.6目录操作8.7案例实战8.3二进制文件读写8.1文件处理流程1.文件概述为了长期保存数据以便重复使用、修改和共享,必须将数据以文件的形式存储到外部存储介质(如磁盘、U盘、光盘或云盘、网盘、快盘等)中。文件操作在各类应用软件的开发中均占有重要的地位:管理信息系统MIS是使用数据库来存储数据的,而数据库最终还是要以文件的形式存储到硬盘或其他存储介质上。应用程序的配置信息往往也是使用文件来存储的。图形、图像、音频、视频、可执行文件等等也都是以文件的形式存储在磁盘上的。1.文件概述文件不仅是数据的存储容器,还是程序执行、数据交换、配置管理等重要功能的实现基础。文件是数据持久化存储的基本单位,分为文本文件(如网页、源代码,存储字符序列,需特定编码)和二进制文件(如图像、音视频,存储字节序列,需专用软件解码)。文本文件存储字符序列,用特定编码方案转换为二进制数据。二进制文件包含任意类型数据,将对象内容以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改或执行。2.处理过程文件处理流程包含有建立文件、打开文件、读取数据、写入数据以及关闭文件。3.打开文件打开文件要用到Python的内置函数open(),其语法格式如下:open(filename,mode='rt',buffering=-1,ncoding=None,newline=None)filename:文件名称,建议使用原生字符串形式,或者路径分隔符使用“/”。mode:指定打开文件后的处理方式:只读,写入,追加等。所有可能取值见表9-1所示。这个参数是非强制的,默认文件访问模式为只读(r)。buffering:0表示不缓存,1表示缓存。大于1表示缓冲区的大小。-1表示缓冲区的大小为系统默认值。encoding:指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如gbk、utf8、cp936等。默认使用的编解码方式和平台相关,可以使用locale.getpreferredencoding()查看,默认windows下cp936。newline:用来控制文本模式之下,一行的结束字符3.打开文件访问模式描述r默认模式,以只读方式打开文本文件,文件的指针将会放在文件的开头。w打开一个文本文件用于写入。如果该文件已存在则将其覆盖;如果该文件不存在,则创建新文件。a打开一个文本文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后;如果该文件不存在,则创建新文件进行写入。
b二进制模式(可与其他模式组合使用)
t文本模式(默认模式,可省略)
+读、写模式(可与其他模式组合使用)4.关闭文件close()
方法用于关闭一个已打开的文件,可以将缓冲的数据写入文件,然后关闭文件。关闭后的文件不能再进行读写操作,否则会触发
ValueError
错误。close()方法允许调用多次。flush()方法将缓冲的数据写入文件,但是不关闭文件。需要注意的是,即使写了关闭文件的代码,也无法保证文件一定能够正常关闭。例如,如果在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这是文件就无法正常关闭。所以,在管理文件对象时推荐使用with关键字,可以有效避免这个问题。文件在读写结束后会自动关闭,即使是异常引起的也是如此。5.with语句with
语句被设计用于简化资源管理,特别是在处理文件、线程、数据库连接等需要明确关闭或释放资源的场景。对于文件操作来说,with
语句特别有用,它自动处理了文件的打开和关闭。with语句的用法如下。withopen("test.txt","r")asfile:content=file.read()8.2文本文件读写1.内容读取(1)read()方法read()方法读取从当前位置直到文件末尾的所有内容,并将其读取的内容作为一个字符串返回。参数size是可选参数,代表的是从文件中读取的字符数。read()方法的语法结构如下:1.内容读取(1)read()方法1.内容读取(2)readline()方法该方法每次读出一行内容,读取时占用内存小,比较适合大文件,返回一个字符串对象,内容是读取到的字符串。其语法格式如下:1.内容读取(2)readline()方法1.内容读取(3)readlines()方法readlines()方法读取从文件当前位置到文件末尾的所有行,返回一个以每行字符串组成的列表。其语法格式如下:1.内容读取(3)readlines()方法2.数据写入(1)write()方法write()
方法用于向一个打开的文件中写入指定的字符串,在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时在文件中看不到写入的内容。其语法格式如下:2.数据写入(1)write()方法2.数据写入(2)writelines()方法writelines()方法在文件中写入一个字符串列表。其语法格式如下:2.数据写入(2)writelines()方法8.3二进制文件读写1.内容读取二进制文件的读取,需要使用open()函数先把二进制文件打开,打开后调用read()方法进行读取。read()方法读取的是二进制的bytes字节串,不能直接显示内容,否则会出现乱码。2.数据写入通过write()方法,可以将字节串写入文件。3.struct模块读写文件struct模块在Python中是一个用于处理字节串与原生Python数据结构类型之间转换的模块。它能将Python的值打包成字节串(序列化),并且能够将字节串解包成Python的值(反序列化)。struct模块常用的函数是pack()和unpack()。pack()和unpack()的语法格式如下:3.struct模块读写文件struct模块代码举例如下:3.struct模块读写文件struct模块代码举例如下:4.pickle模块读写文件pickle是Python标准库中的一个模块,用于将Python对象进行序列化和反序列化。pickle模块拥有dump()和load()函数。dump()函数是将对象进行序列化写进文件中。而load()函数是从文件中读取数据进行反序列化。dump()函数和load()函数的语法格式如下:4.pickle模块读写文件pickle示例如下:8.4CSV和JSON文件读写1.CSV文件读写CSV(Comma-SeparatedValues,逗号分割值或者字符分割值)文件是一种逗号分隔的纯文本形式存储的表格数据。Python中的csv模块提供了reader()和writer()方法。csv模块中的writer类可用于读写序列化的数据,其语法格式如下:csv模块中的reader类用于读取文件中的数据,其语法格式如下:1.CSV文件读写CSV文件读写的案例2.JSON文件读写JSON(JavaScriptObjectNotation,JavaScript对象表示法)是一种轻量级的数据交换格式,采用了完全独立于语言的文本格式来存储和表示数据,是跨平台传输对象的首选数据格式。Python语言内置的json模块提供了对JSON数据的解析和生成的功能,json模块提供了四个主要的方法用来进行Python对象的编解码。2.JSON文件读写表json模块常用方法方法说明格式dump()将Python对象转化为JSON格式的字符串并写入文件,即序列化json.dump(data,file)load()读取文件中JSON格式的字符串并转化为Python对象,即反序列化json.load(file)dumps()将Python对象转换为JSON格式的字符串json.dumps(data)loads()读取JSON格式的字符串并转化为Python对象json.loads(json_data)2.JSON文件读写使用json模块进行序列化和反序列化8.5文件操作文件操作1.重命名文件os.rename()方法用于重命名文件或目录,如果dst是一个存在的目录,将抛出OSError异常。rename()方法的语法格式如下:2.删除文件os.remove()方法用于删除指定路径的文件,无法删除文件夹。如果指定的路径是一个目录,将抛出OSError异常。remove()方法语法格式:os.remove(path)path:要删除的文件路径(可以是相对路径、绝对路径)。文件操作使用rename()和remove()文件操作3.判断是否文件os.path.isfile(path)方法判断path是否是一个文件,返回值是True或者False。4.复制文件shutil.copy(src,dst)方法将文件src复制到文件或目录dst中,该函数返回目标文件名。5.检查文件是否存在os.path.exists(path)方法用于检查文件的存在性,返回一个布尔值(True、False)。6.获取绝对路径名os.path.abspath(path)方法返回path的绝对路径名。文件操作使用copy()、exists()和abspath()8.6目录操作目录操作创建目录os.mkdir(path)方法用于创建单层目录,目录存在时会抛出FileExistsError异常。os.mkdirs(path)创建多级目录结构,即使中间的某一级目录不存在也会被自动创建出来。2.获取当前目录os.getcwd()返回当前工作目录。3.改变当前目录os.chdir(path)改变当前工作目录。4.获取目录内容os.listdir(path)返回path指定的目录下包含的文件或子目录的名字列表。5.删除目录os.rmdir(path)删除path指定的目录,如果目录非空,则抛出一个OSError异常。目录操作6.判断是否为目录os.path.isdir(path)方法用于判断path是否为目录,返回一个布尔值。7.连接多个目录os.path.join(path,*paths)方法连接两个或多个path,形成一个完整的目录。8.分割路径os.path.split(path)方法对路径进行分割,以元组方式进行返回。os.path.splitext(path)方法从路径中分割文件的扩展名。os.path.splitdrive(path)从路径中分割驱动器名称。目录操作9.获取路径os.path.abspath(path)方法返回path的绝对路径;os.path.dirname(path)返回path的路径名部分;os.path.relpath(path,start=os.curdir)方法返回从基准路径start到目标路径path的相对路径字符串。10.遍历目录树os.walk(path)用于遍历指定路径下所有子目录和文件的函数,返回一个生成器。每次迭代中,生成器会依次访问指定目录下的每个子目录,包括指定目录的路径。目录操作批量修改文件和目录名8.7案例实战案例实战1.
案例描述(1)编写程序,将九九乘法表写入到“乘法口诀.txt”文件中。并从“乘法口诀.txt”文件中读取数据输出。(2)编写程序,实现备份指定目录下的所有文件和子目录。2.
案例实现(1)九九乘法表。编程思路:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新增墙体-加固施工方案(3篇)
- 明渠清淤-开挖施工方案(3篇)
- 树木钢管支撑施工方案(3篇)
- 毕业照片策划活动方案(3篇)
- 沥青铺设施施工方案(3篇)
- 液化土-栈道施工方案(3篇)
- 焊接过梁施工方案(3篇)
- 田野野炊活动方案策划(3篇)
- 绿化起重吊装施工方案(3篇)
- 节日专属活动方案策划(3篇)
- 2026眼镜镜片制造过程评估及镀膜工艺Plus偏光镜研发趋势说明
- 2026-2030中国摩卡咖啡壶行业市场发展趋势与前景展望战略分析研究报告
- 2026年民法典宣传月专题知识竞答
- 2025年西部计划高频考点公基训练题库(附解析)
- 2026辽宁报刊传媒集团(辽宁日报社)面向社会招聘高层次人才10人备考题库附答案详解(突破训练)
- 2026小升初语文专项冲刺辅导
- (新)生物安全年度工作计划
- DB34∕T 2396-2015 高速公路桥梁伸缩缝维修与更换技术规程
- GB/T 15568-2024通用型片状模塑料(SMC)
- 《JJG196-2006-常用玻璃量器检定规程》
- (高清版)DZT 0426-2023 固体矿产地质调查规范(1:50000)
评论
0/150
提交评论