zoukankan      html  css  js  c++  java
  • 文件操作:w,w+,r,r+,a,wb,rb

    1.文件操作是什么?

    操作文件:
    f = open("文件路径",mode="模式",encoding="编码")
    open() # 调用操作系统打开文件
    mode # 对文件的操作方式
    encoding # 文件的编码 -- 存储编码要统一
    # win -- gbk
    # linux -- utf-8
    # mac -- utf-8 最常用的就是utf-8

    f 文件句柄 -- 操作文件的相当于锅把

    读 r 写: w清空写 ,a追加写 读 rb 写 wb ab

    2.读

    r rb r+ r+b

    r

    文件全部读取完后以后,再次读取就没有内容

    f = open("a",mode="r",encoding="gbk")

    content = f.read() # 全部读取

    c1 = f.read(3) # 按字符个数读取

    print(f.readline(3)) # 读取一行内容中多个字符

    print(f.readlines()) # 一行一行读取,存储到列表中 获取到的内容里显示 , 是换行

    f = open("a",mode="r",encoding="gbk")

    print(f.read())

    路径

    F:a111.txt 绝对路径 从磁盘的根处查找
    相对路径 相对于当前文件进行查找的

    查看当前工作路径

    import os
    print(os.getcwd()) #

    print(repr("F:a文件初识.txt"))
    print("F:a文件初识.txt")

    一行一行读取 -- 防止内存溢出
    for i in f: # 迭代读取print(i)

    3.写

    写 w 清空写 a 追加写
    w 分为两步
    1.检测是否存在文件,没有文件,创建文件,有文件清空文件

    1. 在写入

    f = open("day8",mode="w",encoding="utf-8") #打开
    f.write("123") # 写
    f.close() # 关闭文件

    操作文件:1.打开文件 2.操作文件 3.关闭文件

    f = open("a",mode="r",encoding="gbk")
    print(f.read())
    f.close()  # 关闭文件后就不能继续读取了
    
    f = open("a",mode="a",encoding="gbk")
    f.write("啊啊啊,好困啊")
    文件末尾添加
    

    4.读写非文本文件

    f = open("1.jpg",mode="rb")

    rb ,wb,ab 不能指定编码
    print(f.read()) # read() 全部读取
    print(f.read(3)) # 字节

    import requests 爬取
    ret = requests.get("http://www.521609.com/uploads/allimg/151124/1-1511241G251317.png")
    f = open("2.jpg",mode="wb")
    f.write(ret.content)
    f.close()

    5.文件的+模式

    r 读 r+ 读写
    w 写 w+ 写读
    a 写 a+ 写读

    错误示范
    f = open("day8",mode="r+",encoding="utf-8")
    f.write("你好啊") #文件此时会被改写
    print(f.read()) #读到的内容是修改后的

    正确示范 -- 后期开发中使用频率比较低
    f = open("day8",mode="r+",encoding="utf-8")
    print(f.read())
    f.write("脑瓜疼啊脑瓜疼")

    1. w+ 写读
      f = open("day8",mode="w+",encoding="utf-8")
      f.write("你您你你")
      print(f.read())
    2. a+ 追加写读
      f = open("a",mode="a+",encoding="gbk")
      print(f.tell()) # 查看的是字节
      f.seek(0)
      print(f.read(1)) # 字符
    3. 其他操作:

    查看光标: tell() 返回值 返回的就是当前光标的位置
    移动光标:
    seek(0,0) 文件开始位置
    seek(0,1) 光标的当前位置
    seek(0,2) 文件末尾位置
    seek(3) 按照字节调节 使用utf-8是3 gbk是2

    6.另一种文件打开方式

    f = open("day8",mode="r",encoding="utf-8")
    f.read()

    with open("day8",mode="r",encoding="utf-8") as f: # 面向对象中上下文管理
    print(f.read())

    with open 帮助自动关闭文件
    with open 同时操作多个文件

    with open("day8",mode="r",encoding="utf-8") as f,
    open("a",mode="w",encoding="gbk") as f1:
    print(f.read())
    f1.write("真饿!")

    7.文件的修改

     with open("day8",mode="r+",encoding="utf-8")as f:
    
         content = f.read()    #赋值
         content = content.replace("您","你") #替换
         f.seek(0,0) #移动光标到文首
         f.write(content)  #写入内容
    
    
    
     with open("day8",mode="r",encoding="utf-8")as f,
     open("new_day8",mode="a",encoding="utf-8")as f1:
    
         for i in f:
             content = i.replace("你","我")
             f1.write(content)
    
    
    # import os 创建备份文件
    
    # os.remove("day8")  # 原数据可以使用rename来做备份
    # os.rename("new_day8","day8")
    
    # 1.文件初识
    
    # open() # 打开文件
    
    # open("文件的路径")
    
    # open(mode="对文件的操作方式")
    
    # open(encoding="utf-8")
    
    # 编码:win -gbk linux - utf-8 mac -- utf-8
    
    # f = open()  #文件句柄
    
    
    
    # 读文本
    
    # r 模式
    
    # read()  # 全部读取
    
    # read(3) # 通过字符来读取
    
    # readline() # 读取一行
    
    # readlines() # 一行一行的读取存放的列表中
    
    
    
    # 写文本
    
    # w  清空写, a 追加写
    
    
    
    # w操作:
    
    # 1.先判断有没有文件存在,文件存在清空文件,文件不存在创建文件
    
    # 2.写入内容
    
    
    
    # a操作:
    
    # 在文件的末尾添加
    
    
    
    # 读非文本
    
    # rb  不能指定编码
    
    # 写非文本
    
    # wb  ab  不能指定编码
    
    
    
    # +操作:
    
        # r+  读写
    
            # 1.先读,再写
    
        # w+ 写读
    
            # 2.先写后读
    
        # a+ 追加写读
    
            # 3. 先写后读
    
    
    
    # 其他操作:
    
    # tell() 查看光标 -- 返回光标的当前位置(字节)
    
    
    
    # seek 移动光标
    
        # seek(0,0) # 移动光标到文件开始位置
    
        # seek(0,1) # 光标的当前位置
    
        # seek(0,2) # 移动光标到文件的末尾位置
    
        # seek(3)   # 按照字节移动
    
    
    
    # 另一个打开方式:
    
    # with open("文件路径",mode="操作文件的方式",encoding="编码") as f:
    
    # 上下文管理
    
    # 1.可以自动帮助咱们关闭文件
    
    # 2.可以同时打开多个文件
    
    
    
    # 修改文件:
    
    # with open("原文件")as f,open("新文件")as f1:
    
        # f.for循环的读取
    
        # f1.for循环的写入
    
    
    
    # import os
    
    # os.rename("原文件名字",备份名字")    # 对原文件进行备份
    
    # os.rename("新文件名字","原文件名字") # 把新文件改成原文件的名字
    
  • 相关阅读:
    【SqlSugarCore】SqlSugarScope的异步上下文问题
    web系统国际化思路
    mac iterm2 报错“iterm2_precmd:type:50”解决
    Atcoder 123C 1, 2, 3
    Atcoder 123D Yet Another Sorting Problem
    Atcoder 124F Chance Meeting
    Atcoder 212D Querying Multiset
    Atcoder 212E Safety Journey
    Atcoder 212F Greedy Takahashi
    Atcoder 212G Power Pair
  • 原文地址:https://www.cnblogs.com/ayongxin93/p/11041202.html
Copyright © 2011-2022 走看看