版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章文件和数据格式化文件概述文件的基本操作文件的迭代实例10:用户登录数据维度与数据格式化Python中的json模块学习目标了解掌握熟悉掌握了解文本文件和二进制文件的意义12熟悉管理文件与目录掌握JSON数据的组织形式、Python数据与JSON数据的转换34掌握文件的基本操作目录☞点击查看本节相关知识点文件的基本操作8.28.1文件概述8.3文件迭代8.4实例10:用户登录目录Python中的json模块8.68.5数据维度与数据格式化☞点击查看本节相关知识点知识架构8.2文件的基本操作1文件的打开和关闭2读文件3写文件4文件读写位置5管理文件和目录知识架构1基于维度的数据分类2一二维数据的存储与读写3多维数据的格式化8.5
数据维度与数据格式化8.1文件概述计算机中文件的定义计算机中的文件是以硬盘等外部介质为载体,存储在计算机中的数据的集合。文本文档、图片、程序、音频等都是文件。8.1文件概述文件概述文件标识的意义:找到计算机中唯一确定的文件。文件标识的组成:文件路径、文件名主干、文件扩展名。1.文件标识操作系统以文件为单位对数据进行管理。8.1文件概述文件概述按照编码方式的不同,计算机中的文件分为:文本文件。以“行”为基本结构组织和存储数据,常用编码有ASCII码、UNICODE码、UTF-8等。二进制文件。以二进制形式编码存储在计算机中,一般是可执行文件、图像、声音、视频等。2.文件类型注意:计算机在物理层面上以二进制形式存储数据;文本文件与二进制文件的区别不在于物理上的存储方式,而是逻辑上数据的组织方式。8.1文件概述示例:使用不同编码方式存储整数112185文本文件存放形式二进制文件存放形式8.1文件概述文件概述Python的sys模块中定义了3个标准文件,分别为:stdin(标准输入文件)。标准输入文件对应输入设备,如键盘。stdout(标准输出文件)。stderr(标准错误文件)。标准输出文件和标准错误文件对应输出设备,如显示器。3.标准文件在解释器中导入sys模块后,便可对标准文件进行操作。示例:使用标准输出文件>>>importsys>>>file=sys.stdout>>>file.write("hello") #向标准输出文件写入hellohello58.1文件概述多学一招:计算机中的流“流”是在不同的输入/输出等设备(键盘、内存、显示器等)之间进行传递的数据的抽象。输入函数的字节序列被称为输入流,输出函数的字节序列被称为输出流。在计算机中传输的数据如同在管道中流动的水,根据数据形式,输入输出流可分为:文本流。文本流中输入输出的数据是是字符或字符串,可以被修改;二进制流。二进制流中输入输出的是一系列字节,不能以任何方式修改。8.2文件的基本操作打开关闭读写文件的基本操作创建删除重命名文件目录对计算机而言,目录是文件的数据集合,它实质上也是一种文件。通过Python的内置方法和os模块中定义的方法可以操作文件。8.2文件的基本操作打开文件——open()函数内置函数open()用于打开文件,该方法的声明如下:open(file,mode='r',buffering=-1)file:文件的路径。mode:设置文件的打开模式,取值有r、w、a、b、+。buffering:设置访问文件的缓冲方式。取值为0或1。参数含义:返回值含义:成功打开文件,会返回一个文件流;若待打开的文件不存在,open()函数会抛出IOError,设置错误码Errno并打印错误信息。r:以只读方式打开文件(mode参数的默认值)。w:以只写方式打开文件。a:以追加方式打开文件。b:以二进制形式打开文件。+:以更新的方式打开文件(可读可写)。8.2文件的基本操作文件打开模式打开模式含义说明r/rb只读模式以只读的形式打开文本文件/二进制文件,如果文件不存在或无法找到,open()调用失败w/wb只写模式以只写的形式打开文本文件/二进制文件,如果文件已存在,清空文件;若文件不存在则创建文件a/ab追加模式以只写的形式打开文本文件/二进制文件,只允许在该文件末尾追加数据,如果文件不存在,则创建新文件r+/rb+读取(更新)模式以读/写的形式打开文本文件/二进制文件,如果文件不存在,open()调用失败w+/wb+写入(更新)模式以读/写的形式创建文本文件/二进制文件,如果文件已存在,则清空文件a+/ab+追加(更新)模式以读/写的形式打开文本/二进制文件,但只允许在文件末尾添加数据,若文件不存在,则创建新文件8.2文件的基本操作文件的缓冲方式buffering设置为0,表示采用非缓冲方式;若设置为1,表示每次缓冲一行数据;若设置为大于1的值,表示使用给定值作为缓冲区的大小;若参数buffering缺省,或被设置为负值时,表示使用默认缓冲机制(由设备类型决定)。示例:使用open()函数打开文件,并将文件流赋给文件对象file1=open('a.txt') #以只读方式打开文本文件a.txtfile2=open('b.txt','w') #以只写方式打开文本文件b.txtfile3=open('c.txt','w+') #以读/写方式打开文本文件c.txtfile1=open('a.txt','wb+') #以读/写方式打开二进制文件d.txt8.2文件的基本操作关闭文件——close()方法close()方法用于关闭文件,该方法的用法如下:file1.close()实现文件的自动关闭。with语句withopen('a.txt')asf:代码段8.2文件的基本操作多学一招:文件系统分类系统会在内存中为正在处理的程序开辟一段空间作为缓冲区内核先将磁盘数据读到输入缓冲区中程序从缓冲区中读取数据缓冲区为空时,内核再次访问磁盘缓冲文件系统(标准I/O)每次读取数据都要访问磁盘与缓冲文件系统相比,内存与磁盘间的读写时间消耗更大非缓冲文件系统(系统I/O)8.2文件的基本操作读文件Python中读取文件内容的方法有很多,其中最常用的有:read()。从指定文件读取指定字节的数据。readline()。从指定文件读取一行数据。readlines()。读取指定文件中的全部数据,并按行存储到列表之中。8.2文件的基本操作写文件Python可通过write()方法向文件中写入数据,write()方法的定义如下:write(str)8.2文件的基本操作数据的即时写入若要将数据即时写入文件,可以使用以下三种方法。修改open()函数的buffering参数刷新缓冲区——flush()方法关闭文件(自动刷新缓冲区)8.2文件的基本操作文件读写位置每个文件对象都有一个称为“文件读写位置”的属性,该属性用于记录文件当前读写的位置。文件读写相关方法tell()方法——获取文件当前的读写位置seek()方法——设置文件的读写位置8.2文件的基本操作seek()方法seek()方法的声明如下:seek(offset,from)offset:偏移量,即读写位置需要移动的字节数。from:指定文件的读写位置,取值为0、1、2,它们代表的含义如下所示。参数含义:0:表示文件开头。1:表示使用当前读写位置。2:表示文件末尾。调用成功后会返回当前读写位置。返回值:8.2文件的基本操作多学一招:文件对象的方法和属性除open()、close()、write()和read()系列函数或方法之外,文件还有一些相关的内置方法和属性,这些方法和属性的名称及功能分别如表所示。分类名称功能方法fileno()返回底层文件的文件描述符(文件系统中已打开文件的唯一标识)readable()若文件对象已打开且等待读取,则返回True,否则返回Falseseekable()判断文件是否支持随机读写,则返回True,否则返回Falsetruncate(size)截取文件到当前文件读写位置,若给定size,则截取size字节的文件__next__()返回文件对象的下一行属性mode获取文件对象的打开模式name获取文件对象的文件名encoding获取文件使用的编码格式closed若文件已关闭则返回True,否则返回False8.2文件的基本操作管理文件与目录删除文件——remove(文件名)文件重命名——rename(原文件名,新文件名)创建/删除目录——os.mkdir(目录名)/os.rmdir(目录名)获取当前目录——os.getcwd()更改默认目录——os.chdir(路径名)获取目录列表——os.listdir(目录/路径)8.3文件迭代文件迭代迭代是一个过程的多次重复Python中实现了__iter__()方法的对象都是可迭代对象(如序列、字典等)文件对象也是一个可迭代对象迭代器有“记忆”功能示例:在两个有先后次序关系的循环中以迭代的方式各打印两行文件内容。8.4实例10:用户登录实例10:用户登录编程程序,实现用户登录界面。需求:分析:用户登录功模块分为管理员登录和普通用户登录,在用户使用软件时,系统会先判断用户是否为首次使用:若是首次使用,则进行初始化,否则进入用户类型选择。用户类型分为管理员和普通用户两种,若选择管理员,则直接进行登录;若选择普通用户,先询问用户是否需要注册,若需要注册,先注册用户再进行登录。8.5数据维度与数据格式化维度从广义上讲,维度是与事物“有联系”的概念的数量,根据“有联系”的概念的数量,事物可分为不同维度。8.5数据维度与数据格式化基于维度的数据分类根据组织数据时与数据有联系的参数的数量,数据可分为一维数据、二维数据和多维数据。具有对等关系的一组线性数据,如:一维列表一维元组集合一维数据二维数据关联参数的数量为2,如:矩阵二维数组二维列表二维元组二维数据利用键值对等简单的二院关系展示数据间的复杂结构,如:字典多维数据8.5数据维度与数据格式化示例成都,杭州,重庆,武汉,苏州,西安,天津,南京,郑州,长沙,沈阳,青岛,宁波,东莞,无锡一维数据二维数据8.5数据维度与数据格式化示例“高三一班考试成绩”:[ {“姓名”:“刘婧”, “语文”:“124”, “数学”:“137”, “英语”:“145”, “理综”:“260”}; {“姓名”:“张华”, “语文”:“116”, “数学”:“143”, “英语”:“139”, “理综”:“263”};
…… ]多维数据8.5数据维度与数据格式化一二维数据的存储与读写一维数据呈线性排列,一般用特殊字符分隔,例如:使用空格分隔:成都杭州重庆武汉苏州西安天津使用逗号分隔:成都,杭州,重庆,武汉,苏州,西安,天津使用&分隔:成都&杭州&重庆&武汉&苏州&西安&天津1.数据存储一维数据的存储需要注意以下几点:同一文件或同组文件一般使用同一分隔符分隔。分隔数据的分隔符不应出现在数据中。分隔符为英文半角符号,一般不使用中文符号作为分隔符。8.5数据维度与数据格式化一二维数据的存储与读写二维数据可视为多条一维数据的集合,当二维数据只有一个元素时,这个二维数据就是一维数据。CSV(Commae-SeparetedValues,逗号分隔值)是国际上通用的一二维数据存储格式。1.数据存储CSV格式规范:以纯文本形式存储表格数据文件的每一行对应表格中的一条数据记录每条记录由一个或多个字段组成字段之间使用逗号(英文、半角)分隔8.5数据维度与数据格式化一二维数据的存储与读写1.数据存储CSV也称字符分隔值,具体示例如下:姓名,语文,数学,英语,理综刘婧,124,137,145,260张华,116,143,139,263邢昭林,120,130,148,255鞠依依,115,145,131,240黄丽萍,123,108,121,235赵越,132,100,112,2108.5数据维度与数据格式化一二维数据的存储与读写2.数据读取Windows平台中CSV文件的后缀名为.csv,可通过OfficeExcel或记事本打开Python在程序中读取.csv文件后会以二维列表形式存储其中内容示例csv_file=open('score.csv')lines=[]forlineincsv_file: line=line.replace('\n','') lines.append(line.split(','))print(lines)csv_file.close()8.5数据维度与数据格式化一二维数据的存储与读写3.数据写入将一、二维数据写入文件中,即按照数据的组织形式,在文件中添加新的数据。示例:在保存学生成绩的文件score.csv中写入每名学生的总分。8.5数据维度与数据格式化多学一招:RFC4180CSV格式标准每一行记录为单独一行,用回车换行符(\r\n)分隔。文件中最后一行记录可以有回车换行符,也可以没有。第一行为可选的标题头,此行格式与普通记录格式相同。标题头要包含文件记录字段对应的名称,且与记录字段一一对应。包括标题头在内的每行记录都存在一个或多个由半角逗号分隔的字段,整个文件中每行包含相同数量的字段;空格也是字段的一部分,不应被忽略;每一行记录最后一个字段后不需要逗号。每个字段可用(也可以不用)英文半角双引号(“”)括起来,如果字段没有使用双引号,那么该字段内部不能出现双引号字符。字段中若包含回车换行符、双引号或逗号,该字段需要用双引号括起来。如果用双引号括起字段,那么出现在字段内的双引号前必须加一个双引号(如:“alpha”,“eir““c”,“mike”)进行转义。8.5数据维度与数据格式化多维数据的格式化为了直观地表示多维数据,也为了便于组织和操作,三维及以上的多维数据统一采用键值对的形式进行格式化。网络平台上传递的数据大多是高维数据,JSON是网络中常见的高维数据格式。JSON格式的数据遵循以下语法规则:数据存储在键值对(key:value)中,例如“姓名”:“张华”。数据的字段由逗号分隔,例如“姓名”:“张华”,“语文”:“116”。一个花括号保存一个JSON对象,例如{“姓名”:“张华”,“语文”:“116”}。一个方括号保存一个数组,例如[{“姓名”:“张华”,“语文”:“116”}]。8.5数据维度与数据格式化示例:“高三二班考试成绩”:[ {“姓名”:“陈诚”, “语文”:“124”, “数学”:“127”, “英语”:“145”, “理综”:“259”}; {“姓名”:“黄思”, “语文”:“116”, “数学”:“143”, “英语”:“119”, “理综”:“273”};
…… ]8.5数据维度与数据格式化示例:将学生成绩以XML格式存储<高三二班考试成绩> <姓名>陈诚</姓名><语文>124</语文><数学>127<数学/><英语>145<英语/><理综>259<理综/> <姓名>黄思</姓名><语文>116</语文><数学>143<数学/><英语>119<英语/><理综>273<理综/> ……</高三二班考试成绩>8.6
Python中的json模块JSON模块——json利用json模块的dumps()函数和loads()函数可以实现Python对象和JSON数据之间的转换,这两个函数的具体功能如表所示。函数功能dumps()对Python对象进行转码,将其转化为JSON字符串loads()将JSON字符串解析为Python对象8.6
Python中的json模块Python对象与JSON数据转化时的类型对照表Python对象JSON数据dictobjectlist,tuplearraystr,unicodestringint,long,floatnumber
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年消音降噪设备项目规划申请报告模板
- 2024-2025学年新疆维吾尔乌鲁木齐市沙依巴克区数学三上期末达标检测试题含解析
- 2024-2025学年西藏山南地区隆子县数学三上期末经典模拟试题含解析
- 2024-2025学年无锡市数学三年级第一学期期末质量检测试题含解析
- 小学生学习计划四篇
- 世界粮食日主题活动总结怎么写7篇
- 2025年品质生活电器项目提案报告模式
- 元旦节活动方案(15篇)
- 2024年股权投资协议:携手投资共创辉煌未来
- 远程教育学习心得体会三篇主题教育
- TCWAN 0105-2024 搅拌摩擦焊接机器人系统技术条件
- 江苏省期无锡市天一实验学校2023-2024学年英语七年级第二学期期末达标检测试题含答案
- 西方经济学考试题库(含参考答案)
- 引水式水电站工程施工组织设计
- 医院工作流程图较全
- NB/T 11431-2023土地整治煤矸石回填技术规范
- 创业基础(浙江财经大学)智慧树知到期末考试答案章节答案2024年浙江财经大学
- 上海市2024-2025学年高一语文下学期分科检测试题含解析
- 佛山市2022-2023学年七年级上学期期末考试数学试题【带答案】
- 使用权资产实质性程序
- 保险公司增额终身寿主讲课件
评论
0/150
提交评论