zoukankan      html  css  js  c++  java
  • 文件操作三大步骤

    文件操作三大步骤

    • 打开文件
    • 增删改查
    • 关闭文件

    打开文件open r模式

    f = open('路径文件',文件的操作,编码)
    f = open('111.txt',mode='rt',encoding='utf-8')  # f可写成任意变量,可叫文件句柄,文件操作符,文件操作对象,window默认编码方式位gbk,mode打开方式不写默认为rt  b为byte模式(一般用于图片,视频等),默认为t字符模式
    
    • 路径有绝对路径和相对文件路径

      相对文件路径  就是相对于此刻运行的文件    
      绝对文件路径  从根目录下一直到文件名  需要进行转义,路径前加r
      
    • read()默认所有的文件内容都要读取,可指定内容数量,

      f.read(3)  # 读取三个字符  只有一种特殊情况,t(包括r,r+)模式下的read(n),代表的是n个字符,此外代表的全都是字节
      
    • readline() 每次只读取一行,读取出来的数据后面都有带有 ,也就是print时会导致多一次换行(本身print()就带有换行)

      解决  f.readline().strip()
      
    • readlines() 将每一行形成一个元素,放到一个列表中,将所以的内容全部读出来,如果文件很大,占内存,

      解决  f =open('aaa.txt',mode='rt',encoding='utf-8')  # 默认模式带t,可不写
      for line in f:
          print(line)  # 一行一行的进行读取
      

    w模式

    写文件的时候我们要有写完文件就刷新的习惯. 刷新flush(),使用w模式的时候,在每次打开文件的时候会默认将把文件中的所有内容都清空,然后在操作

    f= open('文件',mode='wt',encoding='utf-8')
    f.write()
    f.flush()
    f.close()  # 文件不存在会创建文件
    

    a模式

    都是在文件的末尾写入,不论光标在任何位置,写入的内容后追加在文件的末尾,不存在则会创建文件

    r+

    读写模式,必须是先读后写,因为光标默认在开头位置,当读完了以后再进行写入.我们以后使用频率最高的模式就是r+
    如果先写,则会将之前的内容覆盖一部分在读的时候就是读取写入之后的内容(因为光标此时移动到了写的后面)
     # 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入或者操作文件的时候都是在结尾进行的操作.
    

    w+

    写读模式,所有的内容清空,然后写入.最后读取.但是读取的内容是空的,不常用
    先读在写不就行了.w+模式下 其实和w模式一样,把文件清空了,在写的内容.所以很少人用
    

    a+

    a+模式下,不论是先读还是后读,都是读不到数据的,因为光标默认在最后
    

    b模式下,此时不能指定编码,只能时二进制

    seek()

    seek(n)光标移动到n位置,注意: 移动单位是byte(字节),移动的是字符所有如果是utf-8的中文部分要是3的倍数,通常我们使用seek都是移动到开头或者结尾,移动到开头:seek(0,0) 可以看做成seek(0)
    # 移动到结尾:seek(0,2) seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾
    f = open("小小力", mode="r+", encoding="utf-8")
    f.seek(0) # 光标移动到开头
    content = f.read() # 读取内容, 此时光标移动到结尾
    print(content)
    f.seek(0) # 再次将光标移动到开头
    f.seek(0, 2) # 将光标移动到结尾
    content2 = f.read() # 读取内容. 什么都没有
    print(content2)
    f.seek(0) # 移动到开头
    f.write("啦啦啦") # 写入信息. 此时光标在9 中文3 * 3个 = 9
    f.flush()
    f.tell() # 可以告诉我们当前光标的位置
    f.close()
    

    truncate()

    # 截断  如果想做截断操作.要先挪动光标. 挪动到你想要截断的位置. 然后再进行截断关于truncate(n), 如果给出了n. 则从开头文件的首行首字节开始截断,截断文件为size个字节, 如果不给n, 则从当前位置截断. 后面的内容将会被删除
    

    open()简写

    with open('文件1',mode='模式',encoding='编码') as f,open('文件1',mode='模式',encoding='编码') as m:
    # t(默认):读写都是以str字符串为单位,一定要指定encoding
    # b:读写都是以bytes为单位,一定不能指定encoding参数
    
    image-20200716161242901
  • 相关阅读:
    Android 6.0以上动态获取权限
    大学实验3指导:利用单链表实现A-B
    大学课程实验2指导-二叉树的建立与遍历
    大学实验1 哈夫曼编码
    大学java教案之MySQL安装图解
    DrawableAnimation小练习
    Android学习第7天
    Android学习第6天
    There's no Qt version assigned to this project for platform Win32
    OpenBCI 开发环境配置
  • 原文地址:https://www.cnblogs.com/feiguoguobokeyuan/p/13323223.html
Copyright © 2011-2022 走看看