第七章文件处理_第1页
第七章文件处理_第2页
第七章文件处理_第3页
第七章文件处理_第4页
第七章文件处理_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、2021-7-121 概述概述 文件的常见操作文件的常见操作 目录的常见操作目录的常见操作 2021-7-122 数据的存储可以使用数据库,也可以使用文件。数据的存储可以使用数据库,也可以使用文件。 数据库保持了数据的完整性和关联性,且使用数数据库保持了数据的完整性和关联性,且使用数 据更安全、可靠。使用文件存储数据则非常简单据更安全、可靠。使用文件存储数据则非常简单 、易用,不必安装数据库管理系统等运行环境。、易用,不必安装数据库管理系统等运行环境。 文件通常用于存储应用软件的参数或临时性数据文件通常用于存储应用软件的参数或临时性数据 ,是一个命名的比特集合,存储在硬盘、,是一个命名的比特集

2、合,存储在硬盘、U盘、盘、 闪存条等辅助存储设备中。闪存条等辅助存储设备中。 文件分为两类:文本文件和二进制文件。文件分为两类:文本文件和二进制文件。 Python提供了提供了os、os.path、shutil等模块处等模块处 理文件。理文件。 2021-7-123 基本是字符串。基本是字符串。Python源代码文件和源代码文件和HTML文件等都属文件等都属 于文本文件。于文本文件。 可使用任何文本编辑器进行编辑,对人来说相对容易阅读可使用任何文本编辑器进行编辑,对人来说相对容易阅读 和修改。和修改。 对程序来说,无法直接阅读文本文件。通常,每种文本文对程序来说,无法直接阅读文本文件。通常,每

3、种文本文 件都需要使用相应的分析程序来阅读,例如,件都需要使用相应的分析程序来阅读,例如,Python使使 用专用分析程序来帮助阅读用专用分析程序来帮助阅读.py文件,而要阅读文件,而要阅读HTML文文 件,需要使用专用于件,需要使用专用于HTML的分析程序。的分析程序。 通常比等价的二进制文件大。需要通过网络发送大型文本通常比等价的二进制文件大。需要通过网络发送大型文本 文件时,一般要进行压缩(如压缩成文件时,一般要进行压缩(如压缩成zip格式),以提高格式),以提高 传输速度和节省磁盘空间。传输速度和节省磁盘空间。 2021-7-124 通常是人无法直接阅读的,且使用常规的文本编通常是人无

4、法直接阅读的,且使用常规的文本编 辑器无法查看。在文本编辑器中打开二进制文件辑器无法查看。在文本编辑器中打开二进制文件 时,显示的是一堆乱码。有些类型的二进制文件时,显示的是一堆乱码。有些类型的二进制文件 (如(如JPEG图像)需要使用特殊查看器显示其内图像)需要使用特殊查看器显示其内 容。容。 占据的空间通常比等价的文本文件小。占据的空间通常比等价的文本文件小。 对程序来说,可以直接阅读二进制文件。虽然二对程序来说,可以直接阅读二进制文件。虽然二 进制文件各不相同,但通常无需编写复杂的分析进制文件各不相同,但通常无需编写复杂的分析 程序来读取它们。程序来读取它们。 2021-7-125 文件

5、的常见操作包括:文件的常见操作包括: 打开文件打开文件 读写文件读写文件 复制文件复制文件 删除文件删除文件 2021-7-126 文件的打开或创建可以使用函数文件的打开或创建可以使用函数open。该函数。该函数 可以指定处理模式,设置打开的文件为只读、只可以指定处理模式,设置打开的文件为只读、只 写或可读写状态。写或可读写状态。 格式:格式: open(file, mode, buffering)file object 2021-7-127 参数参数file是被打开的文件名。若文件是被打开的文件名。若文件file不存在,不存在, open()将创建该文件,然后再打开该文件。将创建该文件,然后

6、再打开该文件。 参数参数mode是指文件的打开模式。打开模式如表是指文件的打开模式。打开模式如表 7-1。 参数参数buffering设置缓存模式。设置缓存模式。0表示无缓冲;表示无缓冲; 1表示行缓冲;如果大于表示行缓冲;如果大于1则表示缓冲区的大小,则表示缓冲区的大小, ,-1(或者任何负数)代表使用默认的缓冲区大(或者任何负数)代表使用默认的缓冲区大 小。以字节为单位。小。以字节为单位。 open()返回返回1个个file对象,对象,file对象可以对文件对象可以对文件 进行各种操作。进行各种操作。 2021-7-128 参数参数描述描述 r以只读的方式打开文件以只读的方式打开文件 r+

7、以读写的方式打开文件以读写的方式打开文件 w以写入的方式打开文件。先删除文件原有的内容,再重新写入新的内容。以写入的方式打开文件。先删除文件原有的内容,再重新写入新的内容。 如果文件不存在,则创建一个新的文件。如果文件不存在,则创建一个新的文件。 w+以读写的方式打开文件。先删除文件原有的内容,再重新写入新的内容。以读写的方式打开文件。先删除文件原有的内容,再重新写入新的内容。 如果文件不存在,则创建一个新的文件。如果文件不存在,则创建一个新的文件。 a以写入的方式打开文件,在文件末尾追加新的内容。如果文件不存在,以写入的方式打开文件,在文件末尾追加新的内容。如果文件不存在, 则创建一个新文件

8、则创建一个新文件 a+以读写的方式打开文件,在文件末尾追加新的内容。如果文件不存在,以读写的方式打开文件,在文件末尾追加新的内容。如果文件不存在, 则创建一个新文件则创建一个新文件 b以二进制模式打开文件。可与以二进制模式打开文件。可与r、w、a、+结合使用结合使用 U支持所有的换行符号。如:支持所有的换行符号。如:r、n、rn 2021-7-129 file类用于文件管理,可以对文件进行创建类用于文件管理,可以对文件进行创建 、打开、读写、关闭等操作。、打开、读写、关闭等操作。 文件的处理一般分为三个步骤:文件的处理一般分为三个步骤: 创建并打开文件,使用创建并打开文件,使用open()函数

9、返回函数返回1个个 file对象。对象。 调用调用file对象的对象的read()、write()等方法处理等方法处理 文件。文件。 调用调用close()关闭文件,释放关闭文件,释放file对象占用的对象占用的 资源。资源。 2021-7-1210 属性和方法属性和方法描述描述 closed判断文件是否关闭,如果文件关闭,返回判断文件是否关闭,如果文件关闭,返回True encoding显示文件的编码类型显示文件的编码类型 mode显示文件的打开模式显示文件的打开模式 name显示文件的名称显示文件的名称 newlines文件使用的换行模式文件使用的换行模式 file(name,mode ,

10、buffering) 以以mode指定的方式打开文件。如果文件不存在,则先指定的方式打开文件。如果文件不存在,则先 创建文件,再打开文件。创建文件,再打开文件。Buffering表示缓存模式。表示缓存模式。0 表示不缓存;表示不缓存;1表示行缓冲;如果大于表示行缓冲;如果大于1则表示缓冲区的则表示缓冲区的 大小;大小;-1或其他负数表示默认缓冲区或其他负数表示默认缓冲区 flush()将缓冲区的内容写入磁盘将缓冲区的内容写入磁盘 close关闭文件关闭文件 2021-7-1211 2021-7-1212 属性和方法属性和方法描述描述 read(size)从文件中读取从文件中读取size个字节的

11、内容,作为字符返回个字节的内容,作为字符返回 readline(size)从文件中读取从文件中读取1行,作为字符串返回。若指定行,作为字符串返回。若指定size,表,表 示每行每次读取的字节数,依然要读完整行的内容示每行每次读取的字节数,依然要读完整行的内容 readlines(size)将文件中的每行存储在列表中返回。若指定将文件中的每行存储在列表中返回。若指定size,表示,表示 每次读取的字节数每次读取的字节数 seek(offset,wh ence) 将文件的指针移动到一个新的位置。将文件的指针移动到一个新的位置。Offset表示相对于表示相对于 whence的位置。的位置。Whenc

12、e用于设置相对位置的起点,用于设置相对位置的起点, 0表示从文件开头开始计算;表示从文件开头开始计算;1表示从当前位置开始计算;表示从当前位置开始计算; 2表示从文件末尾开始计算。若表示从文件末尾开始计算。若whence省略,省略,offset 表示相对文件开头的位置表示相对文件开头的位置 tell()返回文件指针当前的位置返回文件指针当前的位置 next()返回下一行的内容,并将文件的指针移到下一行返回下一行的内容,并将文件的指针移到下一行 truncate(size)删除删除size个字节的内容个字节的内容 write(str)将字符串将字符串str的内容写入文件的内容写入文件 write

13、lines(seque nce_of_string) 将字符串序列写入文件将字符串序列写入文件 2021-7-1213 2021-7-1214 文件的读取有多种方法,包括:文件的读取有多种方法,包括: readline() readlines() read() 2021-7-1215 readline()每次读取文件中的一行,需要每次读取文件中的一行,需要 使用永真表达式循环读取文件。但当文件使用永真表达式循环读取文件。但当文件 指针移动到文件的末尾时,依然使用指针移动到文件的末尾时,依然使用 readline()读取文件将出现错误。因此程读取文件将出现错误。因此程 序中需要添加序中需要添加1

14、个判断语句,判断文件指针个判断语句,判断文件指针 是否移动到文件的尾部,并且通过该语句是否移动到文件的尾部,并且通过该语句 中断循环。中断循环。 2021-7-1216 2021-7-1217 执行结果:执行结果: 函数函数readlines()可一次性读取文件中多可一次性读取文件中多 行数据。行数据。 使用使用readlines()读取文件,需要通过循读取文件,需要通过循 环访问环访问readlines()返回的内容。返回的内容。 2021-7-1218 2021-7-1219 执行结果:执行结果: 读取文件最简单的方法是使用读取文件最简单的方法是使用read(), read()将从文件中一

15、次性读出所有的内容将从文件中一次性读出所有的内容 ,并赋值给,并赋值给1个字符串变量。个字符串变量。 2021-7-1220 2021-7-1221 执行结果:执行结果: 2021-7-1222 执行结果:执行结果:story.txt内容:内容: 文件的写入同样有多种方法,可以使用文件的写入同样有多种方法,可以使用 write()、writelines()方法写入文件。方法写入文件。 例例7-1使用使用write()方法将字符串写入文方法将字符串写入文 件,而件,而writelines()方法可将列表中存储方法可将列表中存储 的字符串序列写入文件。的字符串序列写入文件。 2021-7-1223

16、 2021-7-1224 hello.txt内容:内容: 相比在文件末尾添加字符串,将字符串写相比在文件末尾添加字符串,将字符串写 入文件开头不那么容易,因为操作系统没入文件开头不那么容易,因为操作系统没 有提供这样的支持。有提供这样的支持。 解决的方法是:将文件读取到一个字符串解决的方法是:将文件读取到一个字符串 中,将新文本插入到该字符串,再将这个中,将新文本插入到该字符串,再将这个 字符串写入原来的文件。字符串写入原来的文件。 2021-7-1225 2021-7-1226 插入字符串后的插入字符串后的story.txt内容:内容: 将文件将文件companies.txt 的字符串前加上

17、的字符串前加上 序号序号1、2、3、后写到另一个文件后写到另一个文件 scompanies.txt中。中。 2021-7-1227 companies.txtscompanies.txt 2021-7-1228 删除文件需要使用删除文件需要使用os模块和模块和os.path模块模块 。 os模块提供了对系统环境、文件、目录等模块提供了对系统环境、文件、目录等 操作系统级的接口函数。操作系统级的接口函数。 表表7-3列出了列出了os模块常用的文件处理函数模块常用的文件处理函数 。 注意:注意:os模块的模块的open()函数与内置的函数与内置的 open()函数的用法不同。函数的用法不同。 20

18、21-7-1229 函数函数描述描述 access(path,mode)按照按照mode指定的权限访问文件指定的权限访问文件 chmod(path,mode)改变文件的访问权限改变文件的访问权限 open*filename,flag ,mode=0777) 按照按照mode指定的权限打开文件。默认情况下,给所指定的权限打开文件。默认情况下,给所 有用户读、写、执行的权限有用户读、写、执行的权限 remove(path)删除删除path指定的文件指定的文件 rename(old,new)重命名文件或目录。重命名文件或目录。old表示原文件或目录,表示原文件或目录,new表表 示新文件或目录示新文

19、件或目录 stat(path)返回返回path指定文件的所有属性指定文件的所有属性 fstat(path)返回打开的文件的所有属性返回打开的文件的所有属性 lseek(fd,pos,how)设置文件的当前位置,返回当前位置的字节数设置文件的当前位置,返回当前位置的字节数 startfile(filepath,o peration) 起动关联程序打开文件。例如:打开的是一个起动关联程序打开文件。例如:打开的是一个html 文件,将启动文件,将启动IE浏览器浏览器 tmpfile()创建一个临时文件,文件创建在操作系统的临时目录创建一个临时文件,文件创建在操作系统的临时目录 中中 2021-7-1

20、230 函数函数描述描述函数函数描述描述 abspath(path)返回返回path所在所在 的绝对路径的绝对路径 isabs(s)测试路径是否绝测试路径是否绝 对路径对路径 dirname(p)返回目录的路径返回目录的路径isdir(path)判断判断path指定的指定的 是否是目录是否是目录 exists(path)判断文件是否存判断文件是否存 在在 isfile(path)判断判断path指定的指定的 是否是文件是否是文件 getatime(filename)返回文件的最后返回文件的最后 访问时间访问时间 split(p)对路径进行分隔,对路径进行分隔, 并以列表方式返并以列表方式返 回

21、回 getctime(filename)返回文件的创建返回文件的创建 时间时间 splitext(p)从路径中分割文从路径中分割文 件的扩展名件的扩展名 getmtime(filename) 返回文件的最后返回文件的最后 修改时间修改时间 splitdrive(p)从路径中分割驱从路径中分割驱 动器的名称动器的名称 getsize(filename)返回文件的大小返回文件的大小walk(top,func,arg) 遍历目录数,与遍历目录数,与 os.walk()功能功能 相同相同 2021-7-1231 2021-7-1232 file类并没有提供直接复制文件的方法,但类并没有提供直接复制文件

22、的方法,但 可以使用可以使用read()、write()方法来实现复方法来实现复 制文件的功能。制文件的功能。 2021-7-1233 2021-7-1234 shutil模块是另一个文件、目录的管理接口,提模块是另一个文件、目录的管理接口,提 供了一些用于复制文件、目录的函数。供了一些用于复制文件、目录的函数。 其中,其中,copyfile()函数可以实现文件的复制,函数可以实现文件的复制, move()函数可以实现文件的剪切。函数可以实现文件的剪切。 copyfile(src, dst) move(src, dst) 其中,参数其中,参数src表示源文件的路径,表示源文件的路径,dst表示

23、目标表示目标 文件的路径,均为字符串类型。文件的路径,均为字符串类型。 2021-7-1235 2021-7-1236 os模块的函数模块的函数rename()可以对文件或目可以对文件或目 录进行重命名。录进行重命名。 在实际应用中,经常需要将某一类文件修在实际应用中,经常需要将某一类文件修 改为另一种类型,即修改文件的后缀名。改为另一种类型,即修改文件的后缀名。 可以通过函数可以通过函数rename()和字符串查找函和字符串查找函 数来实现。数来实现。 2021-7-1237 2021-7-1238 2021-7-1239 文件内容的搜索和替换可以使用字符串查文件内容的搜索和替换可以使用字符

24、串查 找和替换来实现。找和替换来实现。 例例7-15:从:从hello.txt文件中统计字符串文件中统计字符串 hello出现的次数。出现的次数。 2021-7-1240 2021-7-1241 执行结果:执行结果: 2021-7-1242 Python中,通常使用中,通常使用pickle模块处理二模块处理二 进制文件。进制文件。 可以使用可以使用pickle.dump将数据结构存储到将数据结构存储到 磁盘,之后再用磁盘,之后再用pickle.load从磁盘获取从磁盘获取 数据结构。数据结构。 pickle不能用于读写特殊格式的二进制文不能用于读写特殊格式的二进制文 件,如件,如GIF文件。对

25、这种格式的文件,必文件。对这种格式的文件,必 须逐字节处理。须逐字节处理。 2021-7-1243 2021-7-1244 执行结果:执行结果: Python的的os模块和模块和os.path模块还提供模块还提供 了一些针对目录操作的函数。了一些针对目录操作的函数。 1、创建目录和删除目录、创建目录和删除目录 os模块提供的常用目录处理函数见表模块提供的常用目录处理函数见表7-4 。 2021-7-1245 函数函数描述描述 mkdir(path,mode=0777)创建创建path指定的一个目录指定的一个目录 makedirs(name,mode=511)创建多级目录,创建多级目录,name表示为表示为 “path1path2” rmdir(path)删除删除path指定的目录指定的目录 removedirs(path)删除删除path指定的多级目录指定的多级目录 listdir(path)返回返回path指定目录下的所有文件名指定目录下的所有文件名 getcwd()返回当前工作目录返回当前工作目录 chdir(path)改变当前目录为改变当前目录为path指定的目录指定的目录 walk(op,topdown=True,onerr or=None) 遍历目录树遍历目录树 path.isfile(p

温馨提示

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

评论

0/150

提交评论