数据持久化
- 计算机存储数据
默认情况下程序中的数据是保存在运行内存中,当程序运行结束,在运行内存中保存的数据会自动销毁;
如果希望在这次运行程序的时候可以使用上一次运行程序产生的数据,就必须把数据保存在硬盘(磁盘)中;
硬盘保存数据的最小单位是文件。 - 数据持久化 - 将数据以文件的形式保存在硬盘中
- 文件操作 - 操作文件内容
open(file, mode='r', *, encoding=None) - 以指定的方式打开指定文件,返回一个文件对象
参数1: file - 需要打开的文件路径(文件路径可以写绝对路径,也可以写相对路径)
绝对路径:文件在计算机中的全路径(windows从盘开始写的路径)
相对路径:在写文件路径的时候可以用'.'开头代表当前目录或者'..'开头代表当前目录的上层目录
(当前目录指定是当前代码文件所在的文件夹)
注意:如果要使用相对路径,被打开的文件必须放在工程中;
如果路径是以'./'开头的, './'可以省略
参数2:mode - 文件打开方式,用来决定:打开文件之后能做什么(能读还是能写)、操作文件的时候数据对应的类型(是字符串还是二进制)
给mode赋值的时候需要两组值:
第一组:决定打开后能做什么对应的值
r - 只读;打开不存在的文件,会报错!
w - 只写;打开的时候会先清空原文件内容;打开不存在的文件不会报错,并且会自动创建这个文件
a - 只写;打开的时候不会清空原文件内容;打开不存在的文件不会报错,并且会自动创建这个文件
第二组:决定操作文件的时候数据的类型
t - 字符串
b - 二进制(bytes)
赋值的时候上面两组值每一组都必须选择一个(如果第二组值不选,就相当于选的是't'):
rt(tr)、rb(br)、r、wt、wb、w、at、ab、a
参数3:encoding - 文本文件编码方式(只有在以t方式打开文件的时候,才需要设置encoding)
一般赋值为'utf-8' , 'gbk'也是一种常见的文件编码方式
utf-8: 文本数据在存储的时候,ascii表中符号用1个字节来存储,一个中文用3个字节存储。可以对任何符号编码
gbk: 文本数据在存储的时候,ascii表中符号用1个字节来存储,一个中文用2个字节存储。除了ascii表和中文以外不能对其他符号进行编码
使用编码值的原则:存储数据的时候使用编码值要和获取数据的时候对应的编码值一致。