您当前的位置:首页 > 计算机 > 编程开发 > Python

Python 文件操作进阶(混合模式、替换、插入)

时间:02-29来源:作者:点击数:

一、简介

  • Python 文件操作(创建、读取、追加、图片视频读取) 上篇文章中使用的操作方式,只能以 读、创建、追加 3 种模式中任意一种打开文件,不能既写又读,也就是读的模式打开只能读,写的模式打开只能写,这样操作起来就相当不方便。
  • 混合模式
    • r+:读写,能读能写,但都是写在文件的最后,跟追加一样,但是可以通过 seek() 调整光标位置进行调整内容。
    • w+:创建写读,这个功能基本没有意义,创建之后写一段内容,在读出来。
    • a+:追加读,文件一打开光标会在文件尾部,写的数据都是追加的形式。

二、操作

  • 操作内容
    中国dzm
    xyq
    test
    
  • 简单使用
    # 读取文件
    f = open('test.txt', 'r+')
    # 读取第一行
    print(f.readline())
    # 获得读取光标位置,并调整写入光标
    f.seek(f.tell())
    # 写入内容,上面为什么需要调整写入光标?读取跟写入的光标不是一起的,是各用各的,
    # 因为 readline() 读取之后,在获取光标,获得的是读取光标位置,
    # 写入光标还是在尾部的,所以需要通过 seek() 将写入光标调整到当前的写入光标位置
    # 要不然内容就会被追加到尾部,而不是插入到中间指定位置
    f.write('zh')
    
    由于硬盘存储机制原因,默认写入只会替换覆盖,比如光标在 10 的位置,现在写入内容 zh,这是 2 个字节,也就是会替换覆盖掉 11、12 位置上的内容:
    中国dzm
    zhq # 这一行的 11、12 位置就被替换了,这样就不能达到插入内容,或替换内容效果
    test
    
  • 替换内容(其他操作)
    如果想要插入内容或者替换内容,可以避开硬盘的存储机制,也就是全部读出来,调整好了,清空之前的内容,在写进去。
    # 读取内容
    f = open('test.txt', 'r+')
    # 加载到内存
    data = f.read()
    # 替换内容(或者替他操作)
    data = data.replace('test', 'djy')
    print(data)
    # 需要将光标移动到开始位置
    f.seek(0)
    # 截断文件,也就是将光标之后的内容全部清空不要了,这样也就达到了清空的
    f.truncate()
    # 把新内容写回硬盘
    f.write(data)
    # 关闭
    f.close()
    
    中国dzm
    xyq
    djy
    
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门