news 2026/4/3 4:50:50

Python语言编程导论第八章 文件处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python语言编程导论第八章 文件处理

内容提要

概述

文件的常见操作

目录的常见操作

一、概述

数据的存储可以使用数据库,也可以使用文件。

数据库保持了数据的完整性和关联性,且使用数据更安全、可靠。使用文件存储数据则非常简单、易用,不必安装数据库管理系统等运行环境。

文件通常用于存储应用软件的参数或临时性数据,是一个命名的比特集合,存储在硬盘、U盘、闪存条等辅助存储设备中。

文件分为两类:文本文件和二进制文件。 Python提供了os、os.path、shutil等模块处理文件。

文本文件的特点:

基本是字符串。

Python源代码文件和HTML文件等都属于文本文件。 可使用任何文本编辑器进行编辑,对人来说相对容易阅读和修改。 对程序来说,无法直接阅读文本文件。

通常,每种文本文件都需要使用相应的分析程序来阅读,例如,Python使用专用分析程序来帮助阅读.py文件,而要阅读HTML文件,需要使用专用于HTML的分析程序。

通常比等价的二进制文件大。需要通过网络发送大型文本文件时,一般要进行压缩(如压缩成zip格式),以提高传输速度和节省磁盘空间。

二进制文件的特点:

通常是人无法直接阅读的,且使用常规的文本编辑器无法查看。

在文本编辑器中打开二进制文件时,显示的是一堆乱码。有些类型的二进制文件(如JPEG图像)需要使用特殊查看器显示其内容。 占据的空间通常比等价的文本文件小。

对程序来说,可以直接阅读二进制文件。虽然二进制文件各不相同,但通常无需编写复杂的分析程序来读取它们。

通常与特定程序相关联,若没有该程序,通常无法使用它们。有些流行的二进制文件的格式是公开的,如果愿意,可以自己编写读写它们的程序,但通常需要花费很大的功夫。

二、文件的常见操作

文件的常见操作包括: 打开文件 读写文件 复制文件 删除文件

1、文件的创建

文件的打开或创建可以使用函数open。

该函数可以指定处理模式,设置打开的文件为只读、只写或可读写状态。

格式: open(file, [mode[, buffering]])—>file object

说明:

参数file是被打开的文件名。若文件file不存在,open()将创建该文件,然后再打开该文件。

参数mode是指文件的打开模式。打开模式如表8-1。

参数buffering设置缓存模式。0表示无缓冲;1表示行缓冲;如果大于1则表示缓冲区的大小,,-1(或者任何负数)代表使用默认的缓冲区大小。以字节为单位。 open()返回1个file对象,file对象可以对文件进行各种操作。

表8-1:文件的打开模式

关于file类:

file类用于文件管理,可以对文件进行创建、打开、读写、关闭等操作。

文件的处理一般分为三个步骤:

创建并打开文件,使用open()函数返回1个file对象。

调用file对象的read()、write()等方法处理文件。

调用close()关闭文件,释放file对象占用的资源。

表8-2:file类的常用属性和方法

例8-1:文件的创建、写入和关闭

例8-2:在文件尾添加内容

2、文件的读取

文件的读取有多种方法,可以使用readline()、readlines()或read()函数读取文件。

(1)按行读取方式readline() readline()每次读取文件中的一行,需要使用永真表达式循环读取文件。

但当文件指针移动到文件的末尾时,依然使用readline()读取文件将出现错误。

因此程序中需要添加1个判断语句,判断文件指针是否移动到文件的尾部,并且通过该语句中断循环。

例8-3:使用readline()读文件

(2)多行读取方式

函数readlines()可一次性读取文件中多行数据。

使用readlines()读取文件,需要通过循环访问readlines()返回的内容。

例8-4:使用readlines()读文件

(3)一次性读取方式

读取文件最简单的方法是使用read(),read()将从文件中一次性读出所有的内容,并赋值给1个字符串变量。

例8-5:使用read()读文件

例8-6:使用read()返回指定字节的内容

3、文件的写入

文件的写入同样有多种方法,可以使用write()、writelines()方法写入文件。

例8-1使用write()方法将字符串写入文件,而writelines()方法可将列表中存储的字符串序列写入文件。

例8-7:使用writelines()写文件

将字符串插入到文件开头:

相比在文件末尾添加字符串,将字符串写入文件开头不那么容易,因为操作系统没有提供这样的支持。

解决的方法是:将文件读取到一个字符串中,将新文本插入到该字符串,再将这个字符串写入原来的文件。

例8-8:将字符串插入到文件开头

4、文件的删除

删除文件需要使用os模块和os.path模块。 os模块提供了对系统环境、文件、目录等操作系统级的接口函数。

表8-3列出了os模块常用的文件处理函数。 注意:os模块的open()函数与内置的open()函数的用法不同。

表8-3:os模块常用的文件处理函数

表8-4:os.path模块常用函数

例8-9:文件的删除

5、文件的复制

file类并没有提供直接复制文件的方法,但可以使用read()、write()方法来实现复制文件的功能。

例8-10:用read()、write()实现文件复制

复制文件的其他方法:

shutil模块是另一个文件、目录的管理接口,提供了一些用于复制文件、目录的函数。

其中,copyfile()函数可以实现文件的复制,move()函数可以实现文件的剪切。

copyfile(src, dst) 其中,参数src表示源文件的路径,dst表示目标文件的路径,均为字符串类型。

Move(src, dst, *, follow_symlinks=True)

例8-11:使用shutil模块实现文件的复制和移动

6、文件的重命名

os模块的函数rename()可以对文件或目录进行重命名。

在实际应用中,经常需要将某一类文件修改为另一种类型,即修改文件的后缀名。

可以通过函数rename()和字符串查找函数来实现。

例8-12:修改文件名

例8-13:修改后缀名

7、文件内容的搜索和替换

文件内容的搜索和替换可以使用字符串查找和替换来实现。

例8-14:从hello.txt文件中统计字符串’hello’出现的次数。

程序及执行结果:

例8-15:将hello.txt中的字符串’hello’全部替换为’hi’,并将结果存入hello2.txt中

8、处理二进制文件

Python中,通常使用pickle模块处理二进制文件。

可以使用pickle.dump将数据结构存储到磁盘,之后再用pickle.load从磁盘获取数据结构。

pickle不能用于读写特殊格式的二进制文件,如GIF文件。对这种格式的文件,必须逐字节处理。

例8-16:二进制文件存取

三、目录的常见操作

Python的os模块和os.path模块还提供了一些针对目录操作的函数。

1、创建目录和删除目录 os模块提供的常用目录处理函数见表8-4。

表8-4:os模块常用目录处理函数

例:目录的创建和删除

2、目录的遍历

例8-18:使用os.walk()遍历目录

3、其他目录相关操作

对目录的常见操作还有: 返回当前目录中的文件和文件夹; 返回当前目录中的指定类型文件;

返回当前目录中所有文件的大小总和等。

例8-19:返回当前目录中的文件和文件夹

例8-20:返回当前目录或指定目录中的.py文件

例8-21:返回当前目录中所有文件的大小总和

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 8:40:24

十几套JavaWeb项目,适合小白的课程设计,收藏这篇就够了

1、基于web的图书管理系统设计与实现 图书管理系统就是利用计算机,结合互联网对图书进行结构化、自动化管理的一种软件,来提高对图书的管理效率。本系统采用JavaServletJsp 的方式实现基于web的图书管理系统。 开发工具及相关技术 Java技术 HTML、css、…

作者头像 李华
网站建设 2026/4/3 3:51:00

基于大模型的家装建材销售平台的设计与实现任务书

广 州 城 市 理 工 学 院毕 业 设 计 (论文) 任 务 书兹发给 专业 班学生 毕业设计(论文)任务书,内容如下: 1.毕业设计(论文)题目:基于大模型的…

作者头像 李华
网站建设 2026/4/3 4:44:27

Java面试个人简历详解,展示技术,突出重点,收藏这篇足够了

1、个人情况 姓名,性别,年龄,工作经验,邮箱,联系方式学校、学历、专业竞赛、获奖、班干部 2、个人技术栈 尽量详细的去展示每一个技术栈 1、JVM的写法:技术服务于项目。 2、写法的底气问题。谓词。肯定…

作者头像 李华
网站建设 2026/4/3 1:47:44

基于大数据的电商商品推荐系统开题报告

青岛黄海学院毕业设计(论文)开题报告题目名称:[黑体,小三号,居中](只有一行标题时,此行可去掉)学 院:[黑体,小三号,居中]专 业:…

作者头像 李华
网站建设 2026/3/30 13:50:51

天机学堂项目文档Day09

day09 实现新增优惠卷的功能 /*** ***思路分析:根据前端传入的dto,可以将coupon信息直接存入数据库当中,但是对于其限定信息 ***还需要进行判断(也就是标签)若是有呢,还需要加入到coupon_scope表当中&…

作者头像 李华