Day15-文件操作
1.异常捕获
try:
需要捕获异常的代码
except:
捕获到异常后会执行的代码
finally:
代码段
finally无论如何都会执行
2.数据持久化
-
-
数据持久化 - 将数据以文件的形式保存到磁盘中
- 程序中的数据默认存储在运行内存中,保存在运行内存中的数据在程序结束后会被自动销毁,就会导致下一次运行程序的时候,无法使用上一次程序运行过程中产生的数据。
如果希望这次运行程序还可以使用之前运行这个程序产生的数据,就必须将这个数据以文件的形式保存到硬盘中。
(保存在硬盘中的数据,除非手动删除,或者磁盘损坏,数据会一直存在)。
- 程序中的数据默认存储在运行内存中,保存在运行内存中的数据在程序结束后会被自动销毁,就会导致下一次运行程序的时候,无法使用上一次程序运行过程中产生的数据。
-
数据持久化工具 - 文件
常见的文件:数据库文件(.db、.sqlite等)、excel文件、csv文件、json文件、普通文本文件(.txt)
-
-
文件操作流程
-
打开文件
open(file, mode=‘r’,*,encoding=None) - 以指定的方式打开指定文件,返回一个文件对象
-
file-------文件路径(文件在计算机中位置信息),分为绝对路径和相对路径两种
1.绝对路径:文件在计算机中的全路径(注意,windows的绝对路径对应的字符串最前面加r)
2.相对路径:使用相对路径的前提:需要打开的文件必须放在工程中
-
用.表示当前目录 (当前代码文件所在的文件夹)
2.用…表示当前目录的上层目录
注意:在相对路径的时候,如果路径是以’./‘,开头的’./'可以省略
-
-
mode -----文件打开方式(决定打开文件后是可以读还是可以写;决定操作文件内容的时候数据对应的类型)
第一组值 - 决定打开后的读写方式
r - 以只读的方式打开文件;
w - 以只写的方式打开文件; 打开的时候会直接清空原文件内容
a - 以只写的方式打开文件; 打开的时候不会删除原文件内容第二组值 - 文件数据对应的类型
t - 数据对应的类型必须是字符串
b - 二进制类型的数据(bytes)
所有的文本文件既可以使用t打开也可以使用b打开(一般使用t);
二进制文件(图片、视频、音频、压缩包、pdf等)只能用b打开。给参数mode赋值的时候,必须在这两组数据中每一组选一个值,第二组值可以不选,不选默认是t,赋值的实际写法:r(rt、tr)、br、rb、w(wt、tw)、wb、bw、a(at、ta)、ab、ba
-
encoding-----------文本文件的编码或者解码方式
注意:只有在以t方式打开文件的时候才能设置encoding
常见的文本文件编码方式:utf-8、gbk (建议使用uft-8)
使用原则:必须保证打开文件读数据的时候对应的编码方式和打开文件写入 数据的时候对应的编码方式一致。
-
-
操作文件
-
文件读操作
文件对象.read() - 获取文件所有内容(从读写位置开始,读到文件结束; 读写位置默认在文件开头), 可以读任何文件
文件对象.readline() - 读一行(从读写位置开始,读到一行),只能读文本文件
文件对象.readlines() —将每一行按列表的方式读出(用推导式整理数据) -
文件写操作
文件对象.write(数据)--------将数据写入指定的文件中
-
关闭文件 - 文件操作完成后必须关闭文件
手动关闭文件:文件对象.close()
自动关闭文件:with open() as 文件对象:
操作文件
-
-
3.数据持久化的方法
第1步:确定需要持久化的数据是什么?
第2步:创建用来保存数据的文件(清楚文件的名字和类型、文件的位置)
第3步:设置文件的初始内容 (看在这个程序一次都没有执行的时候,这个需要持久化的数据应该是多少)
第4步:做到在程序中需要这个数据(需要持久化的数据)的时候,从文件中读这个数据;
如果这个数据在程序中发生了改变,必须将最新的数据写入到文件中。