第8章 文件读写_第1页
第8章 文件读写_第2页
第8章 文件读写_第3页
第8章 文件读写_第4页
第8章 文件读写_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

Python程序设计——从入门到数据分析PYTHON文件读写8.1文件读写8.2CSV文件读写8.3JSON库第八章8.4实例学习目标第八章(1)掌握open()函数打开文件的方法。(2)掌握文件读写方法。(3)掌握CSV模块读写文件的方法。(4)了解JSON库读写JSON数据的使用方法文件读写——文件打开/关闭第八章8.1open()函数的基本语法为:f=open(filename,mode)其中:filename代表文件路径的字符串;mode代表打开模式;f代表文件对象变量。open()函数提供了7种打开模式,见表8.1。文件读写第八章8.1打开模式含义'r'只读模式,如果文件不存在,返回异常FileNotFoundError,默认值'w'覆盖写模式,文件不存在则创建,存在则完全覆盖源文件'x'创建写模式,文件不存在则创建,存在则返回异常FileExistsError'a'追加写模式,文件不存在则创建,存在则在原文件最后追加内容'b'二进制文件模式,配合a/r/w使用't'文本文件模式,默认值'+'与r/w/x/a一同使用,在原功能基础上增加同时读写功能(r+模式默认为覆盖读写)表8.1open()函数的7种打开模式文件读写第八章8.1使用open()函数打开文件并完成读/写操作后,需要将文件关闭,否则文件会一直被Python进程占用,而不能被其他进程使用。关闭文件的方法为close(),关闭方式为文件对象调用该方法。例8.1为文件打开与关闭示例代码。【例8.1】文件打开与关闭。运行结果文件是否关闭?False文件是否关闭?True文件读写第八章8.1文件对象的closed属性判断当前的文件状态,如果文件对象的closed属性值为True,表明文件为关闭状态,否则为打开状态。也可以使用with语句,with语句在文件操作完后自动关闭文件,见例8.2。【例8.2】with语句的使用。运行结果文件是否关闭?True文件读写第八章8.1打开文件后,对文件的操作主要有“读”和“写”2种。“读”表示从打开的文件中读取内容;“写”表示向文件中写入内容。表8.2为Python常用的3种读文件内容的方法,其中f为文件对象变量。表8.2Python中的3个读文件方法方法含义f.read(size)从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或字节流f.readline(size)从文件中读入一行内容,如果给出参数,读入该行前size长度的字符串或字节流f.readlines()从文件中读入所有行,以每行为元素形成一个列表文件读写第八章8.1下面以鸢尾花数据(/ml/datasets/Iris)为例进行文件读写操作,表8.3为部分鸢尾花数据示例。IDSepallengthSepalwidthPetallengthPetalwidthSpecies15.13.51.40.2Iris-setosa24.931.40.2Iris-setosa34.73.21.30.2Iris-setosa44.63.11.50.2Iris-setosa553.61.40.2Iris-setosa表8.3鸢尾花数据示例文件读写第八章8.1运行结果【例8.3】文件内容读取(read()方法读取鸢尾花数据)。'ID,Sepallength,Sepalwidth,Petallength,Petalwidth,Species\n1,5.1,3.5,1.4,0.2,Iris-setosa\n2,4.9,3,1.4,0.2,Iris-setosa\n3,4.7,3.2,1.3,0.2,Iris-setosa\n4,4.6,3.1,1.5,0.2,Iris-setosa\n5,5,3.6,1.4,0.2,Iris-setosa'

文件读写第八章8.1

读取结果为所有数据形成的字符串,包括换行符'\n',并且此时文件读/写位置移动到文件结尾,可以采用seek()方法移动文件读/写位置,其基本语法格式为:f.seek(offset[,whence])

其中:f代表文件对象变量;offset代表偏移量,也就需要移动偏移的字节数;whence:可选,默认值为0,表示要从哪个位置开始偏移,0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。文件读写第八章8.1【例8.4】seek()方法使用。由于【例8.3】读完整个文件,此时文件读/写位置指向文件结尾,因此语句f.read(8)读入内容为空;f.seek(0)表示文件读/写位置从文件开头偏移0个字节,因此文件读/写位置移动到文件开始位置。''0'ID,'运行结果运行结果运行结果文件读写第八章8.1【例8.5】readline()和readlines()方法读取数据。readlines()读取从读/写位置开始的所有数据,结果为列表,原数据的一行为列表的一个元素,且元素类型为字符串。['1,5.1,3.5,1.4,0.2,Iris-setosa\n','2,4.9,3,1.4,0.2,Iris-setosa\n','3,4.7,3.2,1.3,0.2,Iris-setosa\n','4,4.6,3.1,1.5,0.2,Iris-setosa\n','5,5,3.6,1.4,0.2,Iris-setosa']'ID,Sepallength,Sepalwidth,Petallength,Petalwidth,Species\n'#运行结果#运行结果文件读写第八章8.1“写”表示向打开的文件中写入内容,Python常用的写数据方法为write()和writelines(),具体含义见表8.4,其中f为文件对象。向文件写入数据时,需要以能写的模式打开文件,如'w','x','a','r+'等。

函数含义f.write(s)向文件写入一个字符串或字节流,s为要写入的字符串或字节流f.writelines(lines)将元素为字符串的列表lines写入文件表8.4Python的2个写文件方法文件读写第八章8.1例8.6为write()方法的使用,当以“a+”模式打开文件后,文件读/写位置在文件结尾,因此当向文件写入数据时,直接在原有文件内容后附加写入的内容,返回值为写入的字符个数。此时文件读/写位置移动到文件结尾,为了查看写入的内容,采用seek()方法移动读/写位置至文件开头,然后调用readlines()方法读取文件内容,最后关闭文件。例8.6】向文件写内容的write()方法。9#运行结果#返回值为写入的字符个数文件读写第八章8.1例8.7为writelines()方法的应用,与write()方法不同的是,writelines()方法写入的内容是字符串组成的列表。【例8.7】向文件写内容的writelines()方法。['ID,Sepallength,Sepalwidth,Petallength,Petalwidth,Species\n','1,5.1,3.5,1.4,0.2,Iris-setosa\n','2,4.9,3,1.4,0.2,Iris-setosa\n','3,4.7,3.2,1.3,0.2,Iris-setosa\n','4,4.6,3.1,1.5,0.2,Iris-setosa\n','5,5,3.6,1.4,0.2,Iris-setosa\n','北京\n','上海\n','广州\n','深圳']

运行结果CSV文件读写第八章8.2逗号分隔值

(CSV,Comma-SparatedValues)文件是一种国际通用的一维、二维数据存储格式。数据的各个元素之间一般用英文半角逗号分隔,扩展名为.csv。公开数据集鸢尾花数据即为csv格式,如图8.1所示。图8.1鸢尾花数据的csv格式CSV文件读写第八章8.2Python提供了csv模块用于csv文件的读写操作,使用时需要事先导入csv库,即importcsv。表8.5列出了csv模块读写文件时的常用方法。方法含义csv.reader()读操作,返回一个reader对象csv.writer()写操作,返回一个writer对象w.writerow()逐行写入w.writerows()同时写入多行表8.5csv模块读写文件方法表中csv表示csv模块的名称,w表示writer()方法返回的writer对象。CSV文件读写第八章8.2读取文件内容时,如前所述先打开文件,然后采用csv模块的reader()方法创建reader对象,如例8.8中的r即为reader对象。【例8.8】csv方法读文件。[['ID','Sepallength','Sepalwidth','Petallength','Petalwidth','Species'],['1','5.1','3.5','1.4','0.2','Iris-setosa'],['2','4.9','3','1.4','0.2','Iris-setosa'],['3','4.7','3.2','1.3','0.2','Iris-setosa'],['4','4.6','3.1','1.5','0.2','Iris-setosa'],['5','5','3.6','1.4','0.2','Iris-setosa']]可以看出,reader对象为可迭代对象,本例中采用列表推导式遍历reader对象r并以列表形式存储。运行结果CSV文件读写第八章8.2csv模块在写数据时,先创建writer对象,然后由writer对象调用writerow()或writerows()方法写入数据。例8.9为writerow()方法的用法。【例8.9】csv写文件writerow()方法。['ID,Sepallength,Sepalwidth,Petallength,Petalwidth,Species\n','1,5.1,3.5,1.4,0.2,Iris-setosa\n','2,4.9,3,1.4,0.2,Iris-setosa\n','3,4.7,3.2,1.3,0.2,Iris-setosa\n','4,4.6,3.1,1.5,0.2,Iris-setosa\n','5,5,3.6,1.4,0.2,Iris-setosa\n','a,b,c,d\n','aa,bb,cc,dd\n']运行结果CSV文件读写第八章8.2【例8.10】csv写文件writerows()方法。['ID,Sepallength,Sepalwidth,Petallength,Petalwidth,Species\n','1,5.1,3.5,1.4,0.2,Iris-setosa\n','2,4.9,3,1.4,0.2,Iris-setosa\n','3,4.7,3.2,1.3,0.2,Iris-setosa\n','4,4.6,3.1,1.5,0.2,Iris-setosa\n','5,5,3.6,1.4,0.2,Iris-setosaa,b,c,d\n','aa,bb,cc,dd\n']运行结果JSON库第八章8.3JSON(JavascriptObjectNotation)格式可以对高维数据进行表达和存储,是一种轻量级的数据交换格式。JSON格式以键值对方式存储数据,键和值分别用双引号标记(值为数字时可不用标记),并且键值之间以冒号间隔,如:"key":"value"。JSON格式有如下规则:(1)数据保存在键值对中。(2)键值对之间由逗号分隔。(3)大括号保存键值对组成的对象。(4)中括号保存对象组成的数组,对象之间由逗号分隔。JSON格式如下例子所示:"课程介绍":[{"课程名称":"Python程序设计","理论学时":32,"实验学时":16},{"课程名称":"Web原理与应用开发","理论学时":32,"实验学时":24},]JSON库第八章8.3JSON库是处理JSON格式数据的Python标准库,使用前需要导入该库:importjson。JSON库包含两个过程:编码和解码。编码是将Python对象编码成

JSON字符串,解码是JSON字符串解码为Python对象。JSON库中编码函数为dumps(),解码函数为loads()。JSON库第八章8.3dumps()函数的语法格式为:dumps(obj,sort_keys=False,indent=None,ensure_ascii=True)其中,obj为Python数据对象,如字典变量;sort_key用于设置编码器是否按照顺序排序,值为True和False,默认为False;indent为根据数据格式缩进显示,值为缩进的空格个数;ensure_ascii为设置是否允许包含非ASCII码字符,若为True,则不包含非ASCII码字符(即全部为ASCII码字符),否则包含非ASCII码字符,默认为True。处理中文字符时,可将该参数值设为False。JSON库第八章8.3【例8.11】JSON库中dumps()函数的使用。{"数学":90,"语文":88,"英语":78,"音乐":69}运行结果JSON库第八章8.3loads()函数将JSON字符串解码为Python对象,其参数与dumps()方法基本相同。例8.12展示了loads()函数的使用,所用数据为例8.11中的编码结果json_1。【例8.12】JSON库loads()函数使用。运行结果<class'dict'>{'数学':90,'语文':88,'英语':78,'音乐':69}实例第八章8.4本小节结合实例介绍文件的读写过程。文件“某市2014~2019基本数据.csv”存储了某市2014~2019年的基本数据,如表8.6所示。本实例将读取该文件中的数据,将2013年数据写入文件,并打印输出2013年的JSON格式数据。2013年基本数据为:GDP为19500.6亿元,比上年增长5.2%,常住人口2069.3万,人均GDP达到9.32万元。实例第八章8.4年份GDP(亿元)增速(%)常住人口(万)人均GDP(万元)201935371.36.12153.616.42018303206.62154.214201728000.46.72170.712.9201624899.36.72172.911.5201522968.66.92170.510.6

温馨提示

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

评论

0/150

提交评论