Python09_Python的文件操作课件_第1页
Python09_Python的文件操作课件_第2页
Python09_Python的文件操作课件_第3页
Python09_Python的文件操作课件_第4页
Python09_Python的文件操作课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、9 Python的文件操作第9章 Python的文件操作本章内容文件的概念文件的打开和关闭文件的读写操作文件和目录操作使用CSV格式读写数据文件操作的应用Python程序可以从文件中读取数据,也可以向文件中写入数据,文件被广泛应用于用户和计算机的数据交换。文件操作可以分为操作文件内容和管理目录两部分。9.1 文件的概念文件是数据的集合,以文本、图像、音频、视频等形式存储在计算机的外部介质上。根据文件的存储格式不同,可以分为文本文件和二进制文件两种形式。文本文件和二进制文件文本文件由字符组成,按ASCII码、UTF-8或Unicode等格式编码,文件内容方便查看和编辑。二进制文件存储的是由0和1

2、组成的二进制编码。典型的二进制文件包括bmp格式的图片文件、avi格式的视频文件、各种计算机语言编译后生成的文件等。无论是文本文件还是二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,但打开后的操作是不同的。9.1 文件的概念文本文件的编码ASCII码,即美国标准信息交换码,采用8位(1字节)编码,因此最多只能表示256个字符。(10+26+26+其他)UTF-8编码是国际通用的编码,用8位(1字节)表示英语(兼容ASCII码),以24位(3字节)表示中文及其他语言。GB2312编码是中国制定的中文编码,用1字节表示英文字符,用2字节表示汉字字符。Unicode是国际组织制定的可以

3、容纳世界上所有文字和符号的字符编码方案。采用不同的编码方式,写入文件的内容可能是不同的。就汉字编码而言,GBK编码的1个汉字占2个字符,UTF-8编码的1个汉字占3个字符,Unicode编码中的1个汉字占1个字符。9.1 文件的概念文件指针的概念Python用指针表示当前读写位置。在文件读写过程中,文件指针的位置是自动移动的。可以使用tell()方法测试文件指针位置,用seek()方法移动指针位置。以只读方式打开文件时,文件指针指向文件开头;向文件中写数据或追加数据时,文件指针指向文件末尾。通过设置文件指针位置,可以实现文件的定位读写。9.2 文件的打开和关闭打开文件指将文件从外部介质读取到内

4、存中,文件被当前程序占用,其他程序不能操作这个文件。关闭文件释放程序对文件的控制,将文件内容存储到外部介质,其他程序将能够操作这个文件 打开文件函数open()函数来打开文件,并创建一个文件对象。myfile = open(filename,mode)myfile为引用文件的变量,filename为用字符串描述的文件名,可以包含文件的存储路径,mode为文件读写模式9.2 文件的打开和关闭打开文件函数mode取值为:r,r+,w,w+,a,rb,wb等。关闭文件函数close()方法用于关闭文件。myfile.close() flush()方法可将缓冲区内容写入文件,但不关闭文件。myfile

5、.flush()9.3 文件的读写操作以文本文件方式打开的文件,程序默认按照当前操作系统的编码方式来读写文件,也可以指定编码方式来读写文件;以二进制文件方式打开的文件,按字节流方式读写。文件读写操作常用方法方法说明read(size)读取文件全部内容,或读取size长度的字符或字节readline(size)读取文件一行内容,或读取当前行size长度的字符或字节readlines(hint)读取文件的所有行,或读入hint行write(str)将字符串str写入文件writelines(seq_of_str)写多行到文件,参数seq_of_str为可迭代的对象9.3 文件的读写操作读取文件数据

6、1. read()方法例9-2使用read()方法读取文本文件内容。2. readlines()方法和readline()方法readlines()方法一次性读取的所有行,如果文件很大,会占用大量的内存空间,读取的时间也会较长。例9-3使用readlines()方法读取文本文件内容。3. 遍历文件Python将文件看做由行组成的序列,可以通过迭代的方式逐行选取文件。9.3 文件的读写操作向文件写数据write()方法用于向文件中写入字符串,同时文件指针后移;writelines()方法向文件中写入字符串或序列,这个序列可以是列表、元组或集合等。使用该方法写入序列时,不会自动增加换行符。例9-6

7、 向文件中写入字符串。例9-7 使用writelines()方法向文件中写入序列。9.3 文件的读写操作文件的定位读写当需要读取某个位置的数据,或向某个位置写入数据时,需要定位文件的读写位置。1. 获取文件当前的读写位置文件的当前位置就是文件指针的位置。tell()方法可以获取文件指针位置,该方法返回文件的当前位置。例9-8 使用tell()方法获取文件当前的读写位置。2. 移动文件当前位置文件在读写过程中,指针位置会自动移动。调用seek()方法可以手动移动指针位置。例9-9 使用seek()方法移动文件指针位置。7.3 文件的读写操作读写二进制文件read()和write()方法可用于读写

8、二进制文件,但二进制文件只能读写bytes字符串。默认的,二进制文件是顺序读写的,可以使用seek()方法和tell()方法移动和查看文件当前位置。读写bytes字符串传统字符串前加前缀b构成了bytes对象,即bytes字符串,可以写入二进制文件。整型、浮点型、序列等数据类型如果要写入二进制文件,需要先转换为字符串,再使用bytes()方法转换为bytes字符串,之后再写入文件。例7-10 向二进制文件读写bytes字符串。9.3 文件的读写操作读写二进制文件read()和write()方法可用于读写二进制文件,但二进制文件只能读写bytes字符串。默认的,二进制文件是顺序读写的,可以使用s

9、eek()方法和tell()方法移动和查看文件当前位置。读写bytes字符串传统字符串前加前缀b构成了bytes对象,即bytes字符串,可以写入二进制文件。整型、浮点型、序列等数据类型如果要写入二进制文件,需要先转换为字符串,再使用bytes()方法转换为bytes字符串,之后再写入文件。例9-10 向二进制文件读写bytes字符串。9.3 文件的读写操作读写Python对象直接用文本文件格式或二进制文件格式存储Python中的对象,通常需要进行烦琐的转换,可以使用Python标准模块pickle处理文件中对象的读和写。用文件存储程序中的对象称为对象的序列化。pickle是python语言的

10、一个标准模块,可以实现Python基本的数据序列化和反序列化。pickle模块的dump()方法用于序列化操作,能够将程序中运行的对象信息保存到文件中去,永久存储;而pickle模块的load()方法数用于反序列化操作,能够从文件中读取保存的对象。例9-11 使用pickle模块的dump()函数和load()函数读写Python对象。9.4 文件和目录操作查看文件属性、复制和删除文件、创建和删除目录等属于文件和目录操作范畴。常用的文件操作函数os模块和os.path模块提供了大量的操作文件名、文件属性、文件路径的方法。下面示例代码操作的文件保存位置是D:pythonfile36test.tx

11、t。函数名示例abspath(path) os.path.abspath(test.txt)D:pythonfile36test.txtdirname(path) os.path.dirname(D:pythonfile36test.txt)D: pythonfile36exists(path) os.path.exists(D:pythonfile36)Truegetatime(path) os.path.getatime(D:pythonfile36)1518846173.556209getmtime(path) os.path.getmtime(D: pythonfile36test.t

12、xt)1518845768.0536315getsize(path) os.path.getsize(D:pythonfile36test.txt)120isabs(path) os.path.isabs(D: pythonfile36)Trueisdir(path) os.path.isdir(D: pythonfile36) True isfile(path) os.path.isfile(D:pythonfile36) False 常用的文件操作函数os.path模块常用的文件处理函数9.4 文件和目录操作9.4 文件和目录操作常用的文件操作函数os模块常用的文件处理函数函数名功能说明o

13、s.getcwd()当前Python脚本工作的路径os.listdir(path)返回指定目录下的所有文件和目录名os.remove(file)删除参数file指定的文件os.removedirs(path)删除指定目录os.rename(old,new)文件old重命名为newos.mkdir(path)创建单个目录os.stat(path)获取文件属性9.4 文件和目录操作文件的复制、删除、重命名操作1.文件的复制二进制文件和文本文件,文件读写都以字节为单位进行。复制文件可以使用read()与write()方法编程来实现。用 shutil模块的函数实现文件的复制。shutil模块是一个文件

14、、目录的管理接口,该模块的 copyfile()函数就可以实现文件的复制。例9-12 使用shutil.copyfile()方法复制文件。9.4 文件和目录操作文件的复制、删除、重命名操作2. 文件的删除文件的删除可以使用os模块的remove()函数实现 ,编程时可以使用os.path.exists()函数来判断删除的文件是否存在。例9-13 删除文件的程序。3. 文件的重命名文件的重命名可以通过os模块的rename()函数实现。例9-14提示用户输入要更名的文件名,当文件不存在时退出程序;还需输入更名后的文件名,如果这个文件名存在,也退出程序。9.5 使用CSV文件格式读写数据CSV文件

15、介绍1. CSV文件概念和特点CSV文件是一种文本文件,由任意数目的行组成,一行被称为一条记录。CSV格式存储的文件一般采用.csv为扩展名,可以记事本或微软 Excel工具打开,可以在其他操作系统平台上用文本编辑工具打开。CSV文件特点如下。 读取出的数据一般为字符类型,如果要获得数值类型,需要用户完成转换。 以行为单位读取数据。 列之间以半角逗号或制表符为分隔,一般为半角逗号。 一般为每行开头不空格,第一行是属性列,数据列之间用间隔符分隔,无空格,行之间无空行。9.5 使用CSV文件格式读写数据CSV文件介绍2. CSV文件的建立CSV文件是纯文本文件,可以使用记事本按照CSV文件的规则来

16、建立,或使用微软Excel工具录入数据,另存为CSV文件即可。3. Python的csv库Python提供了一个读写CSV文件的标准库,可以通过 import csv语句导入。csv库包含了操作CSV格式文件最基本的功能,典型的方法是csv.reader()和csv.writer(),分别用于读和写CSV文件。9.5 使用CSV文件格式读写数据数据写入和读取到CSV文件1. 数据的维度描述CSV文件主要用于数据的组织和处理。根据数据表示的复杂程度和数据间关系不同,可以将数据划分为一维数据、二维数据和多维数据等3种类型一维数据即线性结构,也叫线性表。二维数据即关系,与数学中的二维矩阵类似,用表格

17、方式组织。多维数据由键值对类型的数据构成,采用对象方式组织,属于维度更好的数据组织方式。9.5 使用CSV文件格式读写数据数据写入和读取到CSV文件1. 数据的维度描述一维数据的描述如下。lst1=a,b,1,100tup1=(1,3,5,7,9)用列表描述的二维数据。lst2=1,2,3,4,a,b,c,-9,-37,100以键值对方式表示的多维数据。成绩单: 姓名:Rose, 专业:计算机, score:78 姓名:Mike, 专业:法学, score:78 姓名:John 专业:历史, score:90 9.5 使用CSV文件格式读写数据2.向CSV文件中写入和读取一维数据用列表变量保存

18、一维数据,可以使用字符串的join()方法组成逗号分隔形式,再通过文件的write()方法保存到CSV文件中。读取CSV文件中的一维数据,即读取一行数据,使用文件的read()方法读取即可,也可以将文件的内容读取到列表中。9.5 使用CSV文件格式读写数据3. 向CSV文件中写入和读取二维数据csv模块中的reader()和writer()方法提供了读写CSV文件的操作。在写入CSV文件的方法中,指定newline=选项,可以防止向文件中写入空行。例9-17 他们看CSV文件中写入二维数据9.6 文件操作的应用为文本文件添加行号 为文本加行号的基本思路是遍历文件的每行,然后使用enumerate() 函数。该函数的功能将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,通常用在for 循环中。读取一行,并添加行号后,再写入新文件中

温馨提示

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

评论

0/150

提交评论