今日小节汇总

文件操作

利用python代码的编写来读写文件

  • 文件的概念
  • 文件的操作方式
  • 文件读写模式
  • 文件操作模式
  • 文件诸多方法
  • 文件内容修改
  • 文件光标移动

详解

文件操作

  1. 文件的概念
  • 就是操作系统暴漏给用户操作硬盘的快捷方式
    • eg:双击一个文件,其实是从硬盘将数据加载到内存
    • ctrl+s保存文件,其实是将内存中的数据刷到硬盘保存
  1. 代码打开文件的两种方式
  • 方式一:
    f = open(文件路径,读写模式,encoding='utf8')
    f.close()
    
  • 方式二:
    with open('a.txt','r', encoding='utf8') as f1:
    with子代码块
    ps:with上下文管理好处在于子代码运行结束自动调用close方法关闭资源
    
  1. 强调
    open方法的第一个参数是文件路径 并且撬棍跟一些字母的组合会产生特殊的含义导致路径查找混乱 为了解决该问题可以在字符串的路径前面加字母r
    D:\a\n\t
    r'D:\a\n\t'
    以后涉及到路径的编写 推荐加上r
    
    with支持一次性打开多个文件
    with open() as f1,open() as f2,open() as f3:
    	子代码
    

文件读写模式

  1. 'r'只读模式:只能读不能写
    # 1.文件路径不存在:会直接报错
    # with open(r'b.txt','r',encoding='utf8') as f:
    #     print(f.read())
    # 2.文件路径存在:正常读取文件内容
    with open(r'a.txt', 'r', encoding='utf8') as f:
        print(f.read())
    
  2. 'w'只写模式:只能写不能看
    # 1.文件路径不存在:自动创建
    # with open(r'b.txt', 'w', encoding='utf8') as f:
    #     pass
    # 2.文件路径存在:先清空文件内容 之后再写入
    with open(r'a.txt', 'w', encoding='utf8') as f:
        f.write('假期综合征 赶紧要调整\n')
        f.write('假期综合征 赶紧要调整\n')
        f.write('假期综合征 赶紧要调整\n')
    强调:换行符需要自己添加 并且在后续数据读取比对的时候也一定要注意它的存在
    
  3. 'a'只追加模式:文件末尾添加数据
    # 1.文件路径不存在:自动创建
    # with open(r'c.txt', 'a', encoding='utf8') as f:
    #     pass
    # 2.文件路径存在:自动在末尾等待追加内容
    with open(r'a.txt', 'a', encoding='utf8') as f:
        f.write('放假七天和上班七天感觉是完全不一样的')
    
    """
    当我们在编写代码的时候 有些部分不知道写什么具体代码 但是也不能空着不写
    这个时候可以使用关键字
    	pass
    	...
    只补全语法不执行功能 本身没有任何的含义
    """
    

文件操作模式

  • 't'文本模式
    • 默认的模式,我们上面所写的r、w、a其实全称是rt、wt、at
      • 只能操作文本文件
      • 读写都是以字符为单位
      • 需要指定encoding参数,如果不知道则会采用计算机默认的编码
  • 'b'二进制模式(bytes模式)
    • 不是默认的模式,需要自己指定rb、wt、at
      • 可以操作任意类型的文件
      • 读写都是以bytes为单位
        不需要指定encoding参数,因为它已经是二进制模式,不需要编码
  • 二进制模式与文本模式针对文件路径是否存在的情况下,规律是一样的!!!

文件诸多方法

  1. read()
    • 一次性读取文件内容 并且光标停留在文件末尾 继续读取则没有内容
    • 并且当文件内容比较多的时候 该方法还可能会造成计算机内存溢出
    • 括号内还可以填写数字 在文本模式下 表示读取几个字符
  2. for循环
    • 一行行读取文件内容 避免内存溢出现象的产生
  3. readline()
    • 一次只读一行内容
  4. readlines()
    • 一次性读取文件内容,会按照行数组织成列表的一个个数据值
  5. readable()
    • 判断文件是否具备读数据的能力
  6. write()
    • 写入数据
  7. writeable()
    • 判断文件是否具备写数据的能力
  8. wrtelines()
    • 接受一个列表,一次性将列表中所有的数据值写入
  9. flush()
    • 将内存中文件数据立刻刷到硬盘,相当于ctrl+s功能

文件内光标的移动

with open(r'a.txt', 'rb') as f:
    print(f.read())
    f.seek(0,0)
    print(f.read())
    f.seek(0, 0)
    print(f.read())
    # print(f.read(2).decode('utf8'))
    # f.seek(-1, 2)
    # print(f.tell())  # 返回光标距离文件开头产生的字节数
    """
    seek(offset, whence)
        offset是位移量 以字节为单位
        whence是模式   0  1  2
            0是基于文件开头
                文本和二进制模式都可以使用
            1是基于当前位置
                只有二进制模式可以使用
            2是基于文件末尾
                只有二进制模式可以使用
    """
    # print(f.read(3).decode('utf8'))
posted on 2022-10-09 08:18  眼眸里的温暖  阅读(26)  评论(0)    收藏  举报