day15

文本操作

open、read、write

数据持久化

  1. 数据持久化 —又叫数据本地化,就是将程序中的数据存储到文件中的过程

    背景:程序中数据默认保存在运行内存中,运行内存中的数据在程序运行结束后会被销毁,如果希望程序中的数据在程序结束后不销毁必须将数据通过文件的形式保存到磁盘中

  2. 常见的数据持久化的工具:数据库(.db .sqlite)json文件、plist文件、csv文件、excel文件、txt文件等等

  3. 文件操作 - 操作的是文件内容

    基本操作基本流程:打开文件 ->操作文件(读、写) -> 关闭文件

    1)打开文件:

    open(file,mode='r',*,encoding=None)
    以指定的方式
    # file - 需要打开的文件的路径(可以是绝对路径也可以是相对路径)注意:相对路径如果是'./'开头,'./'可以省略。
    #  mode - 文件打开方式,由两组值决定打开文件后能干什么,同时决定操作文件的时候数据的类型。
    第一组值(决定能干什么):r、w、a
    第二组值(决定数据类型):t、b 
    r - 只读
    w - 只写,会清空原文件内容(在打开的时候就会被清空)
    a — 只写,不会清空原文件内容
    + - 读写,使用的方法:a+ r+ w+
    # 注意:读的方式打开不存在的文件会报错,但是写的方式不会报错,并且会自动创建该文件
    t - 字符串
    b - 二进制数据(数据类型是字节)
    	打开文本文件可以用t也可以用b;但是二进制文件只能用b打开
    	使用的时候必须在每一组值中选一个,如果第二组值没选,相当于选的't',例如:'rt' 'r' 'rb' 'br'
    # encoding - 文本文件文字存储的时候采用的字符集;只有在以t方式打开文件的时候才需要设置encoding;
    # 一般赋值为'utf-8'数字和字母使用1字节;中文采用3个字节;?表情符号采用4个字节。
    # 'gbk':中文采用4个字节
    
    1. 读操作:

      # 文件对象.read() - 从读写位置开始读到整个文件结束(获取整个文件内容),返回值就是文件内容
      f = open('a.text')
      result = f.read()
      print(result)
      f.seek(0) # 将读写位置移到文件开头
      
    2. 写操作

      # 文件对象.write(数据) - 将指定数据写入指定文件
      f = open('text1.txt','w',encoding='utf-8')
      f.write('数据')
      
    3. 关闭文件

      # f = open('text1.txt','w',encoding='utf-8')
      a = f.write('有内鬼终止交易!')
      f.close()  # 关闭文件
      result = open('text1.txt',encoding='utf-8')
      result = result.read()
      print(result)
      

    数据持久化

    第一步:确定需要持久化的数据
    第二步:创建文件并且确定文件初始内容
    第三部:可以在程序中需要这个数据的时候从文件中读 这个数据
    第四不:当这个数据发生改变以后需要将最新的数据写入文件中
    
    # 练习1:写程序打印程序执行次数
    count = int(open('count.txt',encoding='utf-8').read())
    count += 1
    print(count)
    open('count.txt','w',encoding='utf8').write(str(count))
    
    # 练习2:写程序添加学生,并且打印已经添加过的所有学生
    """
    第1次运行程序:
        请输入学生姓名: 小明
        小明
    第2次运行程序:
        请输入学生姓名: 小花
        小明 小花
    第3次运行程序:
        请输入学生姓名: 小红
        小明 小花 小红
    ....
    """
    name = input('请输入学生名字:')
    open('names.text','a',encoding='utf-8').write(f'{name}')
    result = open('names.text','r',encoding='utf-8').read()
    print(result)
    
    # 练习3:写程序添加学生,并且打印已经添加过的所有学生
    """
    第1次运行程序:
        请输入学生姓名: 小明
        [小明]
    第2次运行程序:
        请输入学生姓名: 小花
        [小明, 小花]
    第3次运行程序:
        请输入学生姓名: 小红
        [小明, 小花, 小红]
    ....
    """
    name = input('请输入学生名字:')
    open('names.text','a',encoding='utf-8').write(f'{name},')
    result =open('names.text','r',encoding='utf-8').read()
    print(result.split(',')[:-1])
    

版权声明:本文为mjh990403原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。