• 第八章


    day08

    第八章

    文件操作

    找到文件位置

    双击打开

    进行一些操作

    r -- read(读) w -- write(写) a -- 追加

    rb -- 读字节 wb -- 清空写 ad -- 追加写

    r+-- 读写 w+ 写读 a+ -- 追加读

    关闭文件

    open() 打开 open通过python控制操作系统进行打开文件

    open("a1","r",encoding="utf-8") open("文件的路径", "进行的操作","文件的编码形式")

    file 文件的位置

    mode 默认不写就是r

    encoding 文件的编码

    f 文件句柄

    文件只能读一次

    读操作

    r -- 读

    f = open("D:Python_s25day08小姐姐电话号",mode="r",encoding="utf-8")
    print(f.read())   # 全部读取
    print(f.read(3))  # 按照字符读取
    print(f.readline())  # 默认尾部有一个
    
    print(f.readline().strip())  # 读取一行
    print(f.readline().strip())  # 将
    去除
    print(f.readlines()) #一行一行读取,全部存储在列表中
    
    

    路径

    绝对路径:从磁盘(c盘)开始查找

    相对路径:相对于某个路经文件进行查找

    路径的转义

    1."D:\Python_s25\day08\t1"
    2.r"D:Python_s25day08	  -- 推荐使用
    

    rb -- 读字节

    f = open("timg.jpg",mode="rb")
    print(f.read())      # 全部读取
    print(f.read(3))     # 按照字节读取p
    rint(f.readline())  # 按照行进行读取
    print(f.readlines())
    

    r和rb的区别

    • r需要指定encoding rb你需要 (字节操作,不能指定encoding)

    • r模式中的read(3)按照字符读取,rb模式中的read(3)按照字节读取

    • read和readlines 如果文件较大时,会出现内存溢出

    • 解决方案:当文件较大时,使用for循环进行读取

    • 面试题:

      f = open('t1',mode="r",encoding="utf-8")
      for i in f:  
          print(i.strip()
      

    写操作

    w-- 清空写(写的时文本)

    先清空文件(在打开文件时进行清空)

    写入内容

    当模式为w和a时,有文件就用当前文件,没有文件就创建一个文件

    ff = open("a1",mode="w",encoding="utf-8")
    ff.write("123")  # 写的内容必须是字符串
    ff = open("a1",mode="w",encoding="utf-8")
    ff.write("我是一个字符串串")  # 写的内容必须是字符串
    ff = open("a1",mode="w",encoding="utf-8")
    ff.write("[1,2,3,4]
    ")  # 写的内容必须是字符串
    ff.write('1111
    ')  # 写的内容必须是字符串
    ff.write('2222
    ')  # 写的内容必须是字符串
    ff = open("a1",mode="w",encoding="utf-8")
    ff.write("[1,2,3,4]
    ")  # 写的内容必须是字符串
    ff.write('1111
    ')  # 写的内容必须是字符串
    ff.write('2222
    ')  # 写的内容必须是字符
    

    wb -- 清空写(写字节)

    f = open('timg.jpg',mode="rb")
    f1 = open("g1.jpg",mode="wb")
    content = f.read()
    f1.write(content)
    

    追加操作

    a -- 追加写(文本)

    f = open("b1",mode="a",encoding="utf-8")
    f.write("你好啊
    ")
    f.write("我好啊
    ")
    f.write("他好啊
    ")
    f.write("大家好啊
    ")
    

    ab --追加写(字节)

    +操作

    r+ 读写(有点用)

    坑 -- 使用方式是错误
    f = open("b1",mode="r+",encoding="utf-8")
    f.write("今天是周一")    # write是清空写
    print(f.read())
    正确的操作:
        f=open("b1",mode="r+",encoding="utf8")
        print(f.read())
        f.write("今天是周一")
    

    w+读写(有点用)

    f = open("b1",mode="w+",encoding="utf-8")
    f.write("今天是周一")
    f.seek(0)  # 移动光标
    print(f.read())
    f = open("b1",mode="w+",encoding="utf-8")
    f.write("今天是周一")
    f.seek(0)  # 移动光标
    f.write("啊啊啊啊啊啊")
    f.seek(0)
    print(f.read())
    

    a+追加读

    f = open("b1",mode="a+",encoding="utf-8")
    f.write("今天是周一")
    f.seek(0)  # 移动光标
    f.write("啊啊啊啊")
    print(f.read())
    

    其他操作

    seek() 移动光标
    f.seek(0,0)  # 移动光标到文件的头部
    f.seek(0,1)  # 移动光标到当前位置
    f.seek(0,2)  # 移动光标到文件末尾
    f.seek(6)   # 移动6个字节。光标是按照字节移动
    f = open("a1","r",encoding="utf-8")
    print(f.read(5))
    f.seek(0,0)  # 移动光标到文件的头部
    f.seek(0,1)  # 移动光标到当前位置
    f.seek(0,2)  # 移动光标到文件末尾
    print(f.read())
    f = open("c1","r",encoding="gbk")
    f.seek(6)   # 光标是按照字节移动
    print(f.read(3)
    

    查看光标:tell 查光标

    tell 查光标
    f=open("c1","r",encoding="gbk")
    print(f.read(3))
    print(f.tell())  # 按照字节进行计
    

    修改文件:import os 操作系统交互的接口

    f = open('a2',"r",encoding="utf-8")f1 = open("a1","w",encoding="utf-8")for i in f:    i = i.replace("日","天")    f1.write(i)f.close()f1.close()os.remove("a2")   # 删除不能找回os.rename("a1","a2"
    
    f = open('a2',"r",encoding="utf-8")f1 = open("a1","w",encoding="utf-8")for i in f:    i = i.replace("天","日")    f1.write(i)f.close()f1.close()os.rename("a2","a3")os.rename("a1","a2")
    

    with open

    自动关闭文件

    同一时间操作多个文件

    考的

    import os  # 操作系统交互的接口
    f = open('a2',"r",encoding="utf-8")
    f1 = open("a1","w",encoding="utf-8")
    i = f1.read().replace("天","日")    # 将文件中全部内容读取容易导致内存溢出
    f1.write(i)
    f.close()
    f1.close()
    os.rename("a2","a3")
    os.rename("a1","a2")
    with open("a3","r",encoding="utf-8")as f,
    open('a2',"r",encoding="utf-8")as f1:   
        print(f.read())   
        print(f1.read()
    

    文件操作的目的

    持久化:永久存储

  • 相关阅读:
    Linux第七周学习总结——可执行程序的装载
    《深入理解计算机系统》第七章读书笔记
    《Linux内核设计与实现》第三章读书笔记
    《Linux内核设计与实现》第十八章读书笔记
    Linux第六周学习总结——进程额管理和进程的创建
    Linux第五周学习总结——扒开系统调用的三层皮(下
    《Linux内核设计与实现》第五章读书笔记
    #Linux第四周学习总结——扒开系统调用的三层皮(上)
    《Linux内核设计与实现》第一二章读书笔记
    Linux第三周学习总结——构造一个简单的Linux系统MenuOS
  • 原文地址:https://www.cnblogs.com/yuancw/p/11503746.html
Copyright © 2020-2023  润新知