




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
食品企业信息系统数据文件操作任务六任务分析任务目标知识目标掌握文件的基本操作,如文件打开、关闭、读写等掌握文件操作技巧,实现不同类型,不同大小文件操作利用pickle与json实现文件数据的序列化操作技能目标熟练掌握Python中文件的相关操作,基本方法熟练掌握利用pickle与json实现数据序列化任务描述文件操作是各类应用软件开发中,都必不可少的重要工作。通过完成本任务,学生能够掌握文件的基本操作,实现文本文件、二进制文件的相关操作以及使用pickle与json模块实现序列化与反序列化操作。最终,通过文件操作,实现信息系统数据保存。任务设计任务内容6-1实现文件的基本操作6-2实现文件的读写操作6-3实现文件数据序列化存储6-1实现文件的基本操作在前面的学习中,虽然实现了信息的录入,但信息录入后,并没有进行相关保存,所以,系统重启后,需要重新录入相关信息,为此造成了该系统的额外工作,增加了工作量。为了克服每次系统重启后,需要大量时间进行数据重新录入,本系统需要把数据以文件形式保存在磁盘或存储介质中(如硬盘、U盘、云盘等),通过文件让系统在下一次执行时,可直接调用,不必重复录入,从而提高系统运行效率。本次任务通过讲解文件的相关知识及如何通过Python实现文件的基本操作,从而通过文件操作完成信息系统中信息文件的保存。6-1实现文件的基本操作在程序系统中,数据保存主要通过文件的形式进行,文件是数据的抽象和集合。你可以把相关信息,保存在“信息.txt”中,这样,程序运行时,就可以通过调用该文件,载入相关数据。对于文件操作,需要掌握几个知识点:1.指定文件的名称2.查找文件和指定文件的位置查找文件和指定文件的位置如何查找文件和指定文件的位置这涉及到了文件的路径,如下图所示,查找generator.py文件的位置,这里体现的是绝对路径。查找文件和指定文件的位置文件路径主要有绝对路径和相对路径两个概念绝对路径:就是从根目录开始这个路径上的所有文件夹名真正的路径。使用该路径一定能找到相应文件。信息.txt所在绝对路“C:\Users\Admin\PycharmProjects\信息.txt”进行访问,打开程序代码如下:在windows环境下,Python程序中使用“\\”进行层级表示,其中,第一个“\”是转义符。#信息.txt与test1.py文件不在同一目录下,需要绝对路径访问f=open('C:\\Users\\Admin\\PycharmProjects\\信息.txt')查找文件和指定文件的位置相对路径:顾名思义,相对路径就是相对于当前文件的路径比如我们执行读取文件“信息.txt“的test2.py,而“信息.txt”文件恰好又和这个test2.py在同一个目录下,如下图所示:那么程序对“信息.txt”文件进行读取时,可以利用相对路径直接调用,代码如下:#信息.txt与程序文件在同一目录下f=open("信息.txt")6-1实现文件的基本操作文件的展示方式通常有两种,一种是二进制文件,一种是文本文件。通过前面的学习,我们可以理解,本质上所有的文件都是二进制形式存储二进制文件:二进制文件直接由0和1组成,没有统一字符编码,该类文件一般存在二进制0和1的组织结构,如图像(.png)和视频(.avi)文件等。文本文件:文本文件就是由单一特定编码组成的文件,如我们经常遇到的“UTF-8”编码,如.py文件和.txt文件等。在Python程序设计中,主要是使用Python提供的相关方法实现应用,具体是在Python中实现这三个步骤,都对应了相关的操作方法。其过程如图所示:打开文件实现对文件的打开,采用的是Python中的open()方法。如打开目录“C:\Users\Admin\PycharmProjects”下的“信息.txt”文件各个参数的细节如下:name:一个包含了你要访问的文件名称的字符串值。mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。打开文件文件常用的不同打开模式,具体如下表所示:打开文件如果在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。如何恰当关闭文件,避免此类问题呢?最好的解决办法是在管理文件对象时推荐使用with关键字,引入上下文管理器进行相关操作。利用with关键字打开文件,执行完with语句内容之后,自动关闭文件对象,可让Python去确定关闭的时机,你只需打开文件,并在需要时使用它,Python会在恰当的时候自动将其关闭。编写测试代码,具体代码如下:with关键字后面的open()方法的返回值赋值给变量f,当离开with代码块的时候,系统会自动调用f.close()方法,with的作用类似
try/finally语句,但with语句更简洁、更安全。#利用with关键字引入上下文管理器进行相关文件操作withopen("信息.txt","rt")asf:print(f.readline())6-2实现文件的读写操作在前面的学习中,完成了文件的打开,关闭的基本操作,也利用with关键字很好的解决了文件关闭的节点问题。当文件打开后,如何对文件进行读写操作,是文件操作的核心,正如如何完善产品介绍的PPT一样,为了实现信息录入时写入相关文件,使用时调用相关文件并读取内容,本次任务通过讲解文件读写的相关函数,通过编程实现文件的读写操作,从而通过文件操作完成系统中信息文件的写入和读取。文件写入操作要想利用文件进行数据接收和提供,需要在Python中利用读写方法实现将数据写入文件和从文件读取数据。文件写入主要方法:操作方法功能描述write(str)将字符串或字节流写入文件,返回的是写入的字符长度。writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。seek(offset[,whence])把文件指针移动到新的字节位置,offset表示相对于whence的位置。whence为0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0。如果操作成功,返回新的文件位置,操作失败,返回-1tell()返回一个整数,表示当前文件指针的位置,即到文件起始位置的比特数文件写入操作文件书写的步骤主要按照打开--写入--(保存)关闭进行,在进行写入是一定要注明文件的打开方式,因为文件的默认打开方式是'r'只读模式。因为没有指明文件以'w'的方式进行打开,所以无法利用write()进行写入。所以此代码进行如下修改:withopen("信息.txt")asf:
print(f)
f.write(‘Welcome’)withopen("信息.txt",“w")asf:
print(f)
f.write(‘Welcome’)文件写入操作文件进行写操作时,还要防治文件原有内容是否被覆盖以上代码会将原有内容覆盖,下面的代码将w模式改为a模式,将保留原有数据,将新增内容追加到原有数据后面:withopen("信息.txt",“w")asf:
print(f)
f.write(‘Welcome’)withopen("信息.txt",“a")asf:
print(f)
f.write(‘Welcome’)文件读取操作关于文件读取操作,文件对象提供了三个“读”方法:read()、readline()和readlines(),具体表示如下表所示:操作方法功能描述read([size])从文本文件中读取size个字符的内容作为结果返回,或从二进制文件中读取指定数量的字节并返回,如果省略size则表示读取所有内容readline()从文本文件中读取一行内容作为结果返回readlines()把文本文件中的每行文本作为一个字符串存入列表中,返回该列表,对于大文件会占用较多内存,不建议使用文件读取操作read()从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象,它通常用于将文件内容放到一个字符串变量中,对于连续的面向行的处理,不必要使用该函数,而且如果文件大于可用内存,则read()方法也不可能实现这种处理。readline()
方法从字面意思可以看出,每次读出一行内容,所以,利用该方法在读取时,占用内存小,比较适合大文件,该方法返回一个字符串对象。readlines()函数是读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素。该函数与readline()的不同是该函数一次读取整个文件,和read()函数一样。readlines()是自动将文件所有内容分析成一个行的列表,该列表可以由Python的for...in...结构进行处理。程序在操作文件时,涉及到把数据先读取到内存进行使用,如果文件比较大,显然不能使用read()和readlines()方法,可利用forlineinf方式,对可迭代对象f进行迭代,这样会自动的使用缓冲IO以及内存管理。6-3实现文件数据序列化存储通过前面的学习,掌握了基本的数据写入和读取,但我们发现系统往往把信息存储在列表和字典等数据结构中。用户关闭程序时,总是要从内存中保存他们提供的信息,我们把变量从内存中变成可存储或传输的过程称为序列化。序列化后,可以把该内容写入磁盘,或通过网络进行传输。反之,把变量内容从序列化的对象重新读到内存称为反序列化。Python中实现序列化的模块叫pickle模块,通过该模块相应方法可以用于对Python对象结构进行序列化和反序列的二进制格式之间的转换。另外,Python允许使用称为JSON(JavaScriptObjectNotation)的流行数据交换格式,而不是让用户不断的编写和调试代码以将复杂的数据类型保存到文件中。模块json让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。你还可以使用json在Python程序之间分享数据。本节任务主要是通过pickle模块与json模块的学习,实现文件数据序列化存储。6-3实现文件数据序列化存储把变量从内存中变成可存储或传输的过程称之为序列化,Python中称之为pickling。笼统的理解就是按照某种规则,我们把内存中的数据保存到文件中,而文件是一个个字节序列。所以必须把内存数据转换为字节序列,输出到文件,这就是序列化。序列化之后我们就可以把内容写入到磁盘或者通过网络传输出去。反之,把变量从序列化的对象重新读取到内存中称之为反序列化,Python中称之为un-pickling。也就是从文件的字节序列恢复到内存中。通过序列化可以实现持久化保持状态,也可以实现跨平台的数据交互。实现序列化存储最常用的主要有两种,分别是pickle模块与json模块。pickle模块pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。pickle模块只能在python中使用,不能跨语言使用python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。pickle模块常用函数如下表所示:pickle模块obj
:序列化对象,将对象obj保存到文件file中去file:表示保存到的类文件对象,file必须有write()接口,file可以是一个以’wb’打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象;protocol:序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。
pickle.dump(obj,file,[,protocol])
JSON模块JSON(JavaScriptbjectNotation)是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。前端和后端进行数据交互,其实就是JS和Python进行数据交互。如下图所示:JSON模块JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python的内置的数据类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油气田开发过程中的能源管理与优化考核试卷
- 电子书版权交易市场的现状与挑战考核试卷
- 木材干燥与锯材加工考核试卷
- 灯具回收与再利用考核试卷
- 生物技术在植物抗逆性育种中的应用考核试卷
- 燃气具企业供应链协同与物流优化考核试卷
- 医疗数据要素市场交易电子审批管理
- 泌尿系统上尿路结石护理
- GPS基础知识与主流应用方案
- 期中模拟卷(云南专用)-2024-2025学年八年级英语下学期核心素养素质调研模拟练习试题(考试版)A4
- 鼠疫防控知识宣传课件
- 山东省国控设计集团有限公司招聘真题2024
- 公路工程资料管理办法
- 记者证考试心理素质试题及答案
- GB/T 45417-2025汽车再生制动功能缺陷分析指南
- 2021年5月四级江苏省人力资源管理师考试《理论知识》真题及答案
- 导学案:5.5 跨学科实践:制作望远镜(学生版)
- 污水处理日常运营管理与维护方案
- 第11课《山地回忆》课件-2024-2025学年统编版语文七年级下册
- 中国教育史(第四版)全套教学课件
- 籍贯对照表完整版
评论
0/150
提交评论