Python编程基础与应用教学课件9

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
26
第九章 数据持久化
9.1一般文件操作
9.1.6 预定义清理行为
使用完一个文件时,应该调用f.close方法关闭它,并释 放其占用的所有系统资源。在调用f.close方法后,试图再次 使用文件对象会失败。
27
第九章 数据持久化
9.1一般文件操作
9.1.6 预定义清理行为
粗心的程序员往往会忘记关闭文件,在多分支程序中尤 其容易犯此错误。 用保留字with处理文件对象是个好习惯,它的好处在于文件 用 完 后 会 自 动 关 闭 , 就 算 发 生 异 常 也 没 关 系 , 它 是 tryfinally块的简写。
如果想把文件中的所有行读到一个列表中,可以使用 list(f)或者f.readlines。
17
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
如果文件file1.txt中只包含英文字符,在任何操作系统 中都能正确读取。如果文件中包含中文,在打开文件时通常 需要指定编码。再制作一个文件poem1.txt,内容为:
7
第九章 数据持久化
9.1一般文件操作
9.1.2 文件的打开与关闭
open()函数简化的语法为:
f = open(file_name , mode='r', encoding=None)
各个参数的说明如下: file_name:文件名称字符串。 mode:一个字符串,表示打开文件的模式,包括
只读、写入和追加等。常用的文件打开模式见表 9-2,默认的打开模式为只读('r')。 encoding:编码方式,默认不指定。
23
第九章 数据持久化
9.1一般文件操作
9.1.5 文件指针
在文本文件中(打开时模式中没有'b'),只允许从文件头 开始寻找(有个例外是用seek(0,2)寻找文件的结尾),而且合 法的偏移值只能是f.tell返回的值或者是0,否则可能产生不 可预知的效果。事实上,如果文件中都是英文字符,也不会 出错。
本讲内容
2
本章内容
9.1 一般文件操作 9.2 CSV文件 9.3 JSON文件 9.4 SQL数据库操作 9.5 peewee
一般文件操作,是指通过编程直接对文件内容进行存 取,是数据持久化的基础技术。
本讲内容
3
第九章 数据持久化
9.1一般文件操作
9.1.1文件的概念
在计算机中,文件都是以二进制的方式存储在磁盘上, 但是根据文件内容的不同,可以将文件分为文本文件和二 进制文件。
24
第九章 数据持久化
9.1一般文件操作
9.1.5 文件指针
但如果文件中有中文,效果则会有所不同。
25
第九章 数据持久化
9.1一般文件操作
9.1.5 文件指针
上图显示结果和书上不一致,想想为什么?
GBK编码,一个汉字占两个字节。 UTF-16编码,通常汉字占两个字节, UTF-8编码是变长编码,通常汉字占三个字节
14
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
f.readline方法从文件中读取单独一行,字符串结尾 会自动加上一个换行符(\n),只有当文件最后一行没有以 换行符结尾时,这一操作才会被忽略。这样返回值就不会 有混淆,如果f.readline返回一个空字符串,那就表示到 达了文件末尾;如果文件中是一个空行,就会返回一个只 包含换行符的字符串'\n'。
30
第九章 数据持久化
9.2 CSV文件
9.2.1 DataFrame与CSV
前面三行代码的含义在8.3节已经介绍,第四行将DataFrame 中的数据写到指定目录下的stock_data.csv文件中。
31
第九章 数据持久化
9.2 CSV文件
9.2.1 DataFrame与CSV
打开该文件,其内容为
w+ 编辑,原有内容会被全部删除。如果该文件不存在,则创建新文件用于读

打开一个文件用于读写。如果该文件已存在则打开文件,文件指针放在
a+ 文件的结尾,新的内容被追加到已有内容之后。如果该文件不存在,则创
建新文件用于读写
9
第九章 数据持久化
9.1一般文件操作
9.1.2 文件的打开与关闭
总结规律:‘r’表示只读,‘w’表示只写,‘a’表 示追加,‘+’表示读写。初学者对打开模式容易混淆,下 图说明了如何根据操作目的选择打开模式。
文本文件可以使用文本编辑软件(如记事本)编辑,如 扩展名为.txt、.xml和.json的文件,扩展名为.py的 Python程序也是文本文件。文本文件本质上仍然是二进制 文件,但由于它的内容只包含文本,可以用特定的方法进 行处理,在编程时通常与一般的二进制文件区分处理。
4
第九章 数据持久化
9.1一般文件操作
20
第九章 数据持久化
9.1一般文件操作
法将string的内容写入文件,并返回 写入字符的长度。
21
第九章 数据持久化
9.1一般文件操作
9.1.4 写文件
想要写入其它非字符串内容,首先要将它转换为字符 串。
s的值为"('abc', 8)",共10个字符(8前面有一个空格)。 。
5
第九章 数据持久化
9.1一般文件操作
9.1.1文件的概念
从编程的角度看,文件操作分为三个步骤。各步骤的 操作内容及对应的Python函数/方法见下表
序号
步骤
函数/方法
说明
1
打开
open()
打开文件,并且返回文件对象
读读 2写 写
read write
将文件内容读取到内存 将指定内容写入文件
3
关闭
close
32
第九章 数据持久化
9.2 CSV文件
9.2.1 DataFrame与CSV
下面示例演示如何从CSV文件中读取数据。
33
第九章 数据持久化
9.2 CSV文件
9.2.2 读CSV文件
并不是所有CSV文件中的数据都要读取到DataFrame中。 除上述DataFrame与CSV文件直接交互的方式外,Python也支 持使用9.1节介绍的一般文件操作方法,虽然稍麻烦,但应用 场合更广泛。折中的方式是使用Python内置的csv模块,它提 供对CSV文件的读写操作功能。
9.2 CSV文件
9.2.1 DataFrame与CSV
由于CSV文件的上述结构特点,它特别适合存储大量结构 化数据,因此往往作为数据库表的导出格式文件,也可以方 便 地 与 Excel 文 件 等 相 互 转 换 。 具 体 到 Python , 由 于 DataFrame与CSV文件的逻辑结构非常相似,所以它们天然地 适合配合使用,DataFrame处理内存数据,CSV保存磁盘数据。 下面讨论DataFrame与CSV之间的交互,请先看下面示例。
22
第九章 数据持久化
9.1一般文件操作
9.1.5 文件指针
f.tell方法返回一个整数,代表文件操作指针在文件中 的位置,该整数计量了自文件开头到指针处的字节数。如果 需 要 改 变 文 件 对 象 指 针 的 话 , 使 用 f.seek(offset, from_what) 方 法 。 指 针 在 该 操 作 中 从 指 定 的 引 用 位 置 (from_what)移动offset字节。from_what值为0表示自文件起 始处开始,1表示自当前文件指针位置开始,2表示自文件末 尾开始。from_what可以忽略,其默认值为零,此时从文件头 开始:
34
第九章 数据持久化
9.2 CSV文件
9.2.2 读CSV文件
并不是所有CSV文件中的数据都要读取到DataFrame中。 除上述DataFrame与CSV文件直接交互的方式外,Python也支 持使用9.1节介绍的一般文件操作方法,虽然稍麻烦,但应用 场合更广泛。折中的方式是使用Python内置的csv模块,它提 供对CSV文件的读写操作功能。
11
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
在IDLE中打开文件有两种方法,一种是使用文件的绝 对路径:
文件名字符串前面的r使字符串中的转义字符失效, 其说明见2.3节。
12
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
另一种方法是先将工作目录转换到文件所在的目录, 然后再打开文件:
打开文件
读 目的 读写
写 r
是 删除原内容 否
w
a
是 删除原内容 否 w+
文件头 初始位置 文件尾
r+
a+
10
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
本节示例使用IDLE进行验证,并且需要为文件操作做 一些准备工作。
用任意文本编辑器制作一个文件file1.txt,将其保存 到磁盘,如保存到E:\PyCharmProjects\ch09目录当中,其 内容为: Hello World! Hello Python! 说明:文件第二行的结尾没有换行。
8
第九章 数据持久化
9.1一般文件操作 模式
说明
以只读方式打开文件。要求打开的文件必须存在,否则报错。文件指针
r
9.1.2 文件的打开与关闭 放在文件的开头。这是默认模式 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开
openw()函始数写入简,化原有的内语容会法被为全:部删除。如果该文件不存在,则创建新文件并写 入
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的
a 结尾,新的内容被追加到已有内容之后。如果该文件不存在,则创建新文
件并写入
打开一个文件用于读写。要求打开的文件必须存在,否则报错。文件指
r+ 针放在文件的开头。新写入的内容覆盖原有内容,未被覆盖的内容将被保
留。
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始
关闭文件
open()函数负责打开文件,并且返回文件对象;read、
write和close都是文件对象的方法。
6
第九章 数据持久化
9.1一般文件操作
9.1.2 文件的打开与关闭
在对文件进行读写操作之前,必须先用Python内置的 open()函数将文件打开。打开文件后会创建一个file对象, 后续的操作都要在该对象基础上,调用该对象的相关方法 才能进行。
剑客 . 贾岛(唐) 十年磨一剑,霜刃未曾试。 今日把示君,谁有不平事。
18
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
打开文件时指定编码
19
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
可以看到,打开文件时并不报错,但试图读取时则出现 错误。解决方法是在打开文件时指定编码。
第九章 数据持久化
2021年9月1日
本章内容
9.1 一般文件操作 9.2 CSV文件 9.3 JSON文件 9.4 SQL数据库操作
9.5 peewee
本章介绍与数据持久化相关的内容。首先介绍一般文 件操作的相关知识。在固定格式文件中,本书选择 CSV和JSON格式文件进行介绍。在众多数据库产品中, 本书选择SQLite数据库进行介绍,还将介绍一个轻量 级的Python ORM产品peewee。
28
本章内容
9.1 一般文件操作 9.2 CSV文件 9.3 JSON文件 9.4 SQL数据库操作 9.5 peewee
CSV(Comma-Separated Values,逗号分隔值)文件是 一类纯文本文件,通常用于存储批量数据。文件的每 行对应一条记录,记录之间用逗号分隔。
本讲内容
29
第九章 数据持久化
15
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
可以循环遍历文件对象来读取文件中的每一行,这是 一种高效、快速,并且代码简单的方式。
16
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
注意,因为返回的字符串自带一个换行符(\n),所以 用print()输出时,用一个空串做结束符,否则就会多空一 行。
13
第九章 数据持久化
9.1一般文件操作
9.1.3 从文件读
文件打开之后,就可以读取其中的内容。需要调用 f.read(size),该方法读取若干数量的数据并以字符串形 式返回其内容,size是可选的数值,指定字符串长度。如 果没有指定size或者指定为负数,就会读取并返回整个文 件。当文件大小为当前机器内存两倍时,就会产生问题。 反之,会尽可能按比较大的size读取和返回数据。如果到 了文件末尾,f.read方法返回一个空字符串('')。
9.1.1文件的概念
二进制文件通常存储数据内容,如保存图片数据的图 片文件(.jpg、.bmp等)、保存结构化数据的数据库文件和 保存文档数据的Word文件(.doc、.docx等)等。这些是固定 格式文件,通常需要专用程序处理。二进制文件的格式通 常不对外公开,有的甚至还会加密,如大多游戏软件的数 据文件,其格式只有开发者才知道。 本节主要介绍文本文件的操作方法。
相关文档
最新文档