【Python学习】Day-019 数据持久化

本文详细介绍了如何在程序中实现数据的持久化,包括数据存储在硬盘上的文件形式、文件操作的基本流程,如打开文件的不同模式、读写操作以及编码设置。重点涵盖了文件的创建、读取和写入操作,以及关闭文件的正确步骤。
摘要由CSDN通过智能技术生成

1. 数据持久化

1.1 计算机存储数据

  • 默认情况下程序中的数据是保存在运行内存中,当程序运行结束,在运行内存中保存的数据会自动销毁;
  • 如果希望在这次运行程序的时候可以使用.上一次运行程序产 生的数据,就必须把数据保存在硬盘(磁盘)中;
  • 硬盘保存数据的最小单位是文件。

1.2 数据持久化

将数据以文件的形式保存在硬盘中
文件操作

  • 1)确定需要持久化的数据
  • 2)创建保存需要持久化数据的文件
  • 3)确定文件初始内容(就是需要持久化的数据的初始值)
  • 4)在程序中需要这个数据的时候从文件中获取这个数据
  • 5)在程序中修改数据后,必须将最新的数据写入到文件中

2. 文件操作

基本流程:打开文件 -> 文件读写 -> 关闭文件

2.1 打开文件

open(file, moode=‘r’, encoding=None)

以指定的方式打开指定文件,返回一个文件对象

  1. 参数1: file - 需要打开的文件路径(文件路径可以写绝对路径,也可以写相对路径)

    • 绝对路径:文件在计算机中的全路径(windows从盘开始写的路径)
    • 相对路径:在写文件路径的时候可以用’.‘开头代表当前目录或者’… ‘开头代表当前目录的上次目录
      (当前目录指定是当前代码文件所在的文件夹)
      注意:如果要使用相对路径,被打开的文件必须放在工程中
      如果路径是以’./'开头的, './'可以省略
  2. 参数2:mode - 文件打开方式,用来决定:打开文件之后能做什么(能读还是能写)、操作文件的时候数据对应的类型(是字符串还是二进制)

给mode赋值的时候需要两组值:

  • 第一组:决定打开后能做什么对应的值

    • r - 只读;打开不存在的文件,会报错!
    • w - 只写;打开的时候会先清空原文件内容;打开不存在的文件不会报错,并且会自动创建这个文件
    • a - 只写;打开的时候不会清空原文件内容;打开不存在的文件不会报错,并且会自动创建这个文件
  • 第二组:决定操作文件的时候数据的类型

    • t - 字符串
    • b - 二进制(bytes)
  • 赋值的时候上面两组值每一组都必须选择一个(如果第二组值不选,就相当于选的是’t’):

    • rt(tr)、rb(br)、r、wt、wb、w、at、ab、a
  1. 参数3:encoding - 文本文件编码方式(只有在以t方式打开文件的时候,才需要设置encoding)
    • 一般赋值为’utf-8’ , 'gbk’也是一种常见的文件编码方式

      • utf-8: 文本数据在存储的时候,ascii表中符号用1个字节来存储,一个中文用3个字节存储。可以对任何符号编码
      • gbk: 文本数据在存储的时候,ascii表中符号用1个字节来存储,一个中文用2个字节存储。除了ascii表和中文以外不能对其他符号进行编码
    • 使用编码值的原则:存储数据的时候使用编码值要和获取数据的时候对应的编码值一致。

2.2 文件读写

  1. 文件读操作:

    • 文件对象.read() - 获取整个文件内容(从读写位置开始,读到文件结束。读写位置默认在文件开头,随着读操作的进行读写位置会不断改变)
    • 文件对象.readline() - 获取一行内容(只能文本文件有效)
    • 文件对象.readlines() - 获取整个文件内容,返回一个列表,列表中的元素是每一行内容(只能文本文件有效)
  2. 文件写操作

    • 文件对象.write(数据)
    • 文件对象.writelines(列表)
# 打开txt文件,创建文件对象
f = open('test.txt', 'a', encoding='utf-8')
# 单个写入
f.write('abc')
# 多个数据写入
f.writelines(['python\n', 'java\n', 'h5\n'])

# 3) 关闭文件
# 文件对象.close()
f.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值