内容正文:
任务6.1 文件操作
记账本
6.1 文件操作——记账本
【任务描述】
小T想编写一个电子记账本,功能类似银行账单,用户可以录入收入、支出及对应备注,并查询账单,了解详情。程序根据用户录入数据,生成包含日期、收入、支出、余额、备注等信息的记录并写入文件进行保存,能够读取文件内容以便用户查询。
6.1 文件操作——记账本
【任务分析】
根据任务需求,完成该任务需要对文件进行读写操作,实现对数据的记录。
(1)写入数据,将收支数据以适当的数据格式写入文件。
(2)读取数据,读取文件内容获取收支数据并参与计算。
(3)模块化设计,根据不同的功能,细分多个模块并实现相应功能。
6.1 文件操作——记账本
6.1.1 文件的打开
6.1.2 文件的关闭
6.1.3 文件的读写操作
6.1.4 文件的定位读写
6.1.5 任务实现——电子记账本
6.1.1 文件的打开
1.文件的类型
文本文件和二进制文件。
文本文件:以单一特定字符编码形式存储数据的文件。如ASCII码、UTF-8编码等。
二进制文件:没有统一的字符编码,按照预定义的格式组织数据。如可执行程序、图片、音频等文件。
6.1.1 文件的打开
根据数据的逻辑存储结构,文件可分为文本文件和二进制文件。文本文件是指以单一特定字符编码形式存储数据的文件。如按照UTF-8编码格式组织的文件。我们常见的.txt文档,.py的python源代码文件都是文本文件。
二进制文件:没有统一的字符编码,按照预定义的格式组织数据。如可执行程序、图形、图像、声音等文件都是二进制文件。
文件的操作
文件处理三步骤:
打开——>操作——>关闭
文件打开和关闭是使文件在存储状态和占用状态之间转化
2.文件的打开
文件存储状态
文件占用状态
打开
关闭
6.1.1 文件的打开
python程序文件操作可分为三个步骤:打开、操作、关闭。
文件保存在电脑上为存储状态,程序通过打开操作将文件转为占用状态,就可以对文件进行排他性操作,操作完毕,关闭文件,文件状态转换为存储状态。因此,文件操作前要打开,操作后要关闭。
open函数调用成功会返回一个文件对象
file:文件的路径和名称,与源文件同目录可省略路径
mode:为文件的打开模式
例:
f = open(file[,mode])
f = open('test.txt','r')
6.1.1 文件的打开
文件打开使用内置函数open,file为文件的路径和名称,mode为为文件的打开模式。下面这个示例就是以只读方式打开了当前目录下的test.txt文件。这里要注意的是,文件路径和名称,打开模式都必须打上引号。
表6-1 文件访问模式
打开模式 含义
r 只读模式,默认值,若文件不存在则返回FileNotFoundError
w 写入模式,如果文件不存在则会创建新文件,文件存在则被覆盖。
a 追加模式,如果文件不存在则会创建新文件,文件存在则文件最后追加写入。
x 创建模式,如果文件不存在则会创建新文件,文件存在则返回FileExistsError
t 以文本模式打开,默认模式。
b 以二进制模式打开。
+ 与r/w/a/x组合使用,在原功能基础上增加读写功能。如“r+”
6.1.1 文件的打开
r、w、a、x是四种与读写相关的模式,b、t是与打开格式相关的模式,+表示增加功能,与r/w/a/x组合使用,在原功能基础上增加读写功能。
6.1.1 文件的打开
提示:
r、w、a、x表示四种与读写相关的模式;b、t是与打开格式相关的模式;+表示增加功能,与r、w、a、x组合使用,在原功能的基础上增加读写功能。这些字符单独或组合使用表示不同类型文件的不同访问模式,比如:
(1)r+ 表示以读写模式打开。
(2)rb表示以二进制读模式打开。
(3)rb+表示以二进制读写模式打开。
打开模式示例:
f = open('test.txt') 只读模式,文本模式,默认值
f = open('test.txt','w') 写入模式,文本模式
f = open('test.txt','rb') 二进制读模式打开
f = open('test.txt','rb+') 以二进制读写模式打开
f = open('test.txt','wb+') 以二进制读写模式打开,文件存在则覆盖,不存在则创建
6.1.1 文件的打开
文件的操作
当使用open()函数打开文件时,如果文件中有中文字符,则有时会出现解码错误的问题,这是因为文件编码和解码方式不一致。在这种情况下,需要根据文件的编码方式,通过指定encoding类别的方式读取文件。
3.编码格式
6.1.1 文件的打开
file = open('test.txt','r',encoding='utf-8')
python程序文件操作可分为三个步骤:打开、操作、关闭。
文件保存在电脑上为存储状态,程序通过打开操作将文件转为占用状态,就可以对文件进行排他性操作,操作完毕,关闭文件,文件状态转换为存储状态。因此,文件操作前要打开,操作后要关闭。
4.文件路径
绝对路径:path='d:\\works\\test.txt'
path=r'd:\works\test.txt' # 避免转义
或 path=R'd:\works\test.txt'
相对路径: ./ # 当前工作路径下
../ # 返回父目录
file = open(r'd:\works\test.txt','r')
6.1.1 文件的打开
文件路径可以使用绝对路径和相对路径,需要注意的是,在Windows系统中,文件路径使用反斜杠(\)而不是斜杠(/)。反斜杠在python中是转义字符,不能直接使用,可用双反斜杠(\\)表示。为了确保万无一失,更安全的方法是以原始字符串方式指定路径,
即学即答:
若要以追加模式打开一个二进制文件,则应将open()函数中打开模式的参数设置为( )。
A.r B.w
C.wb D.ab
6.1.1 文件的打开
6.1.2 文件的关闭
文件对象.close()
6.1.2 文件的关闭
1.文件的关闭
在使用内置函数open()成功打开文件并完成操作之后,如果不再使用该文件,则需要及时地关闭文件,并释放文件对象,否则一旦程序崩溃,很可能导致文件数据丢失。在Python中,可以通过调用文件对象的close()方法来关闭文件,其语法格式如下:
文件打开使用内置函数open,file为文件的路径和名称,mode为为文件的打开模式。下面这个示例就是以只读方式打开了当前目录下的test.txt文件。这里要注意的是,文件路径和名称,打开模式都必须打上引号。
6.1.2 文件的关闭
【例6-1】文件的打开与关闭。
#打开test.txt文件
file = open(‘test.txt’,’w’)
#关闭这个文件
file.close()
文件使用完毕,需要及时地关闭文件,释放文件对象,否则一旦程序崩溃,很可能导致文件数据丢失。在Python中,可以通过调用文件对象的close方法来关闭文件。
6.1.2 文件的关闭
try:
f = open('test.txt', 'w')
#文件操作
finally:
f.close()
try ... finally语句实现文件的打开和关闭:
由于文件读写时都有可能产生IOError,一旦出错,后面的file.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,可以使用try ... finally语句来实现文件的打开和关闭,
with open( file[,mode]) as f:
代码块
6.1.2 文件的关闭
2.上下文管理语句with…as
Python还提供了一种叫作上下文管理器的with …as语句,可以自动释放资源,包括关闭文件,其语法格式如下:
其中,f为文件对象。使用with…as操作打开的文件,无论程序是否抛出异常,都能保证在with…as语句执行完毕时自动关闭已经打开的文件。
文件打开使用内置函数open,file为文件的路径和名称,mode为为文件的打开模式。下面这个示例就是以只读方式打开了当前目录下的test.txt文件。这里要注意的是,文件路径和名称,打开模式都必须打上引号。
6.1.2 文件的关闭
例:
#打开test.txt文件
with open('test.txt','r') as f:
文件的操作
文件使用完毕,需要及时地关闭文件,释放文件对象,否则一旦程序崩溃,很可能导致文件数据丢失。在Python中,可以通过调用文件对象的close方法来关闭文件。
6.1.2 文件的关闭
1.文件操作中的访问模式a代表?( )。
A.只读 B.写入 C.追加 D.不存在该模式
2.要以二进制模式读取文件应使用那种访问模式?( )
A.r B.+ C.w D.c
3.以下选项中,不是Python文件打开的合法模式组合是( )
A. br+ B.r+ C.wr D.bw
即学即答:
$$