zoukankan      html  css  js  c++  java
  • python 第八章 r w a 等文件操作

    # "通讯录"
    # open()  # 打开
    # file  # 文件的位置(路径)
    # mode  # 操作文件的模式
    # encoding # 文件编码方式
    # f  # 文件句柄
    #
    f = open("通讯录",mode="r",encoding="utf-8")
    print(f.read())
    f.close()
    #
    # 操作文件:
    #     1. 打开文件
    #     2. 操作文件
    #     3. 关闭文件
    #
    # 文件操作的模式:
    # r,w,a (重要)
    # rb,wb,ab (次要)
    # r+,w+,a+ (没啥用)
    #
    # f = open("文件的路径(文件放的位置)",mode="操作文件的模式",encoding="文件的编码") # 内置函数
    # f(文件句柄)
    
    
    

    rb,wb,ab

    # rb
    # rb 读出来的数据是bytes类型,在rb模式下,不能encoding字符集
    f1 = open("1.jpeg","rb") # 打开图片
    print(f1.read())   # 全部读取
    print(f1.read(3))  # 按照字节读取
    # 输出字节
    # b''
    #
    # wb 没有文件创建一个文件
    # wb模式下,不可以指定打开文件的编辑,但是写文件的时候必须将字符串转换成utf-8的bytes数据
    f = open("3.jpg","wb") # 没有文件创建一个文件
    f.write(f1.read())
    
    
    # ab 没有文件创建一个文件
    f = open("2.jpg","ab")
    f.write("你好啊".encode("utf-8"))
    
    f = open("2.jpg","rb")
    print(f.read())
    
    
    # +操作
    # r+: 读写 - 先读后写
    #
    # 错误的操作 (坑,不能先写后读)
    f = open("萝莉小姐姐电话号","r+",encoding="utf-8")
    f.write("常鑫你太美")
    print(f.read())
    
    
    # 正确的操作:
    # 打开一个文件,写入"常鑫你太美"
    f = open("萝莉小姐姐电话号","r+",encoding="utf-8")
    print(f.read())
    f.write("常鑫你太美")
    
    # w+ 清空写,读
    
    f = open("萝莉小姐姐电话号","w+",encoding="utf-8")
    f.write("常鑫你太美")
    print(f.tell())
    # 使用utf-8 ,一共占用了15个字节f.seek(15)         #
    print(f.tell())
    print(f.read())
    
    
    # a+ 追加写,读
    f = open("萝莉小姐姐电话号","a+",encoding="utf-8")
    f.write("常鑫你太美")
    print(f.tell())   # 字节数
    print(f.seek(0,0))  # 0将光标移动到文件的头部
    print(f.read()) # 常鑫你太美常鑫你太美
    # 输出
    # 30
    # 0
    # 常鑫你太美常鑫你太美
    
    
    
    # 其他操作:
    # tell 查看光标    --- 返回的是字节数
    # seek 移动光标
    #     1.seek(0,0)  -- 移动到文件的头部
    #     2.seek(0,1)  -- 当前位置
    #     3.seek(0,2)  -- 移动到文件的末尾
    #     4.seek(3)    -- 按照字节进行移动(按照编码集,自己进行计算)
    
    f = open("萝莉小姐姐电话号","r",encoding="gbk")
    print(f.read(3)) # 字符
    
    f = open("萝莉小姐姐电话号","rb")
    print(f.read(3))   # 字节
    
    f = open("萝莉小姐姐电话号","r",encoding="gbk")
    print(f.read(3))     # 字符
    
    # 错误操作
    f = open("萝莉小姐姐电话号","r",encoding="gbk")
    f.seek(-1)
    print(f.read())
    
    # 文件修改
    
    f = open("萝莉小姐姐电话号","r",encoding="gbk")
    s = f.read()
    s1 = s.replace("你太美","吃煎饼")
    
    f1 = open("萝莉小姐姐电话号","w",encoding="gbk")
    f1.write(s1)
    
    # with 关键字 open("萝莉小姐姐电话号","r",encoding="gbk") as f:
    #   文件操作的具体内容
    
    
    # w和a 检测有文件就操作,没文件就创建
    
    with open("萝莉小姐姐电话号","r",encoding="gbk")as f,
            open("萝莉小姐姐电话号.txt","w",encoding="gbk")as f1:
        for i in f:
            s1 = i.replace("大烧饼","井盖")
            f1.write(s1)
    
    import os
    os.rename("萝莉小姐姐电话号","萝莉小姐姐电话号.bak")
    os.rename("萝莉小姐姐电话号.txt","萝莉小姐姐电话号")
    
    with open("萝莉小姐姐电话号","r",encoding="gbk")as f:
        pass # 缩进里操作文件
    print(f.read())  # 文件及已经关闭了
    

    总结

    """
    # 1.文件操作:
    open  -- 打开文件
    file  -- 文件路径
    mode  -- 操作文件的模式
    encoding -- 文件的编码集
    
    打开文件
    操作文件
    关闭文件
    
    # r,w,a (******)
        # r: 读文本
            read()  全部读取
            read(3) 看文件的操作方式 r/w/a 字符
            readline 读取一行(自带换行符)
            readlines() 一行一行读取存放在列表中
    
        # w:清空,写
            open("xxx","w",encoding="utf-8")  # 进行清空
            write()  只能写字符串
    
        # a:追加
            在文本的末尾进行写入
            write()
    
    rb,wb,ab(****)
        #rb:读字节
            read()  全部读取
            read(3) 看文件的操作方式  rb/wb/ab 字节
            readline 读取一行(自带换行符)
            readlines() 一行一行读取存放在列表中
    
        wb:清空,写
            open("xxx","wb")  # 进行清空
                write()  只能写字节
    
        ab:追加
            open("xxx","ab")
                write()  只能写字节
    
    r+,w+,a+ (r+)
    
        r+:读写
            错误的方式是写读
            先读后写
    
        w+:清空写,读
            1.清空文件
            2.读取内容(默认读取的是空)
            3.移动光标
    
        a+:追加写,读
            1.先写后读
            2.读取内容(默认读取的是空)
            3.移动光标
            # 注意点: (a,ab,a+)将光标移动到某个位置进行,写入的时候还是在文件的末尾
    
    其他操作:
        tell()  查看光标返回的是字节
        seek() 移动光标
            seek(0,0) 移动文件头部
            seek(0,1) 当前位置
            seek(0,2) 移动文件末尾
    
            seek(3)  # 按照字节进行计算 (计算方式根据编码计算)
    
        with open("文件路径","操作模式",编码")as f:
            操作文件
    
        with open的好处:
            1.可以同时打开多个文件
            2.能够自动关闭文件
    
        修改文件内容:
            1.创建一个新的文件
            2.将文件中的内容进行替换
            3.替换后的内容写入新文件中
            4.改变文件名
    
        路径:
            绝对路径: 从磁盘根部进行查找
            相对路径: ../返回上一级  --推荐使用
            转义:
                1."C:\user\ner"
                2. r"C:user
    er"  -- 推荐使用
                
    """
    
  • 相关阅读:
    【leetcode】二叉搜索树的最近公共祖先
    052-12
    052-11
    052-10
    052-9
    052-8
    052-6
    052-5
    052-3
    052-2
  • 原文地址:https://www.cnblogs.com/zhangshan33/p/11197525.html
Copyright © 2011-2022 走看看